MVC UpdateModel, wenn die Namen nicht übereinstimmen
Nehmen wir an, Sie haben ein Modell, das ungefähr so aussieht:
public class MyClass {
public string Name { get; set; }
public DateTime MyDate { get; set; }
}
Die von Visual Studio zur Verfügung gestellte Standardbearbeitungsvorlage ist ein einfaches Textfeld für dieMyDate
Eigentum. Dies ist alles in Ordnung und gut, aber nehmen wir an, Sie müssen dies in die Komponenten Monat / Tag / Jahr aufteilen, und Ihr Formular sieht folgendermaßen aus:
<label for="MyDate">Date:</label>
<%= Html.TextBox("MyDate-Month", Model.MyDate.Month) %>
<%= Html.TextBox("MyDate-Day", Model.MyDate.Day) %>
<%= Html.TextBox("MyDate-Year", Model.MyDate.Year) %>
Wenn dies übermittelt wird, ein Anruf anUpdateModel
wird nicht funktionieren, da es keine Definition für gibtMyDate-Month
. Gibt es eine Möglichkeit, dem Projekt eine benutzerdefinierte Sammelmappe hinzuzufügen, um Situationen wie diese zu bewältigen, oder wenn die HTML-Eingaben anders benannt sind (aus welchen Gründen auch immer)?
Eine Problemumgehung, die ich gefunden habe, ist die Verwendung von JavaScript, um eine verborgene Eingabe in das Formular vor der Übermittlung einzufügen, die die Felder verkettet und ordnungsgemäß benannt ist, aber das fühlt sich falsch an.