Ich möchte, dass der Benutzer alle angezeigten Daten (die Spalten aus der Datenbank) eingibt, sie ausfüllt und einreicht. Ich kann nicht die Id und CompanyID bekommen, um entweder mit HTML.HiddenFor
Element automatisch generiert zu bekommen.System.Data.SqlClient.SqlException: Spaltenname oder Anzahl der angegebenen Werte stimmt nicht mit der Tabellendefinition überein
System.Data.SqlClient.SqlException: Column name or number of supplied values does not match table definition..
Modell:
namespace Project.Models
{
public class Contact
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Email { get; set; }
public int Phone { get; set; }
public int CompanyID { get; set; }
}
}
Ausblick:
@model Project.Contact
<h2>Create Contact</h2>
@using (Html.BeginForm("Create", "Home", FormMethod.Post))
{
<table>
<tr>
<th>First name</th>
<th>Last name</th>
<th>Email</th>
<th>Phone</th>
</tr>
<tr>
<td>@Html.HiddenFor(m => m.Id)</td>
<td></td>
<td>@Html.TextBoxFor(m => m.FirstName)</td>
<td>@Html.TextBoxFor(m => m.LastName)</td>
<td>@Html.TextBoxFor(m => m.Email)</td>
<td>@Html.TextBoxFor(m => m.Phone)</td>
<td>@Html.HiddenFor(m => m.CompanyID)</td>
</tr>
</table>
<br />
<input type="submit" name="btn" class="btn-primary" value="Create" />
}
Controller:
using Arbetsprov_Sublime___Andre_Kordasti.Models;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Web.Mvc;
namespace Arbetsprov_Sublime___Andre_Kordasti.Controllers
{
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
[HttpGet]
public ActionResult Create()
{
return View();
}
[HttpPost]
public ActionResult Create(Contact model)
{
var connection = new SqlConnection(@"Data Source=.\SQLExpress;Initial Catalog=Sublime;Integrated Security=True");
connection.Open();
var command = new SqlCommand("INSERT INTO Contact Values('" + model.Id + "','" + model.FirstName + " " + model.LastName + "','" + model.Email + " " + model.Phone + "','" + model.CompanyID + "')", connection);
command.ExecuteNonQuery();
return View();
}
}
}
"INSERT INTO Kontakt" sollte "Select * from Contact" sein –
Ja, aber das hilft nicht, ich bekomme nur eine Liste meiner Kontakte. Ich möchte einen neuen Kontakt erstellen. – Malphai
Sie nehmen derzeit Informationen aus Ihrer Datenbank und füllen sie in ein Objekt. Sie sollten entweder 1) Ihr Kontaktobjekt einem Entitätsframework zuordnen oder 2) einen "in Kontakt (Spaltennamen) values ()" Typ der Abfrage erstellen und diese Abfrage auslösen. –