Dies geschieht, wenn ich versuche, die Entität mithilfe einer Aktion zum Erstellen eines Stils in Asp.Net MVC 2 zu erstellen.
Der POCO hat folgende Eigenschaften:
public int Id {get;set;}
[Required]
public string Message {get; set}
Beim Erstellen der Entität wird die ID automatisch festgelegt, sodass sie für die Aktion "Erstellen" nicht erforderlich ist.
Der ModelState sagt, dass "Das ID-Feld erforderlich ist", aber ich habe das nicht so eingestellt. Ist hier etwas Automatisches los?
EDIT - Grund enthüllt
Der Grund für das Problem wird von Brad Wilson über Paul Speranza in einem der folgenden Kommentare beantwortet, in denen er sagt (Prost Paul):
Sie geben einen Wert für ID an, Sie wussten nur nicht, dass Sie es sind. Es befindet sich in den Routendaten der Standardroute ("{controller} / {action} / {id}") und der Standardwert ist die leere Zeichenfolge, die für ein int nicht gültig ist. Verwenden Sie das Attribut [Bind] für Ihren Aktionsparameter, um die ID auszuschließen. Meine Standardroute war: new {controller = "Customer", action = "Edit", id = ""} // Standardwerte für Parameter
BEARBEITEN - Modelltechnik aktualisieren
Ich habe die Art und Weise, wie ich dies erneut tat, tatsächlich geändert, indem ich TryUpdateModel und das damit verbundene Array mit den Ausschlussparametern verwendet habe.
[HttpPost]
public ActionResult Add(Venue collection)
{
Venue venue = new Venue();
if (TryUpdateModel(venue, null, null, new[] { "Id" }))
{
_service.Add(venue);
return RedirectToAction("Index", "Manage");
}
return View(collection);
}