2017-12-08 3 views
3

Ich arbeite seit einiger Zeit mit MVC. Ich habe ein Formular erstellt, um meine Daten unter Verwendung eines Entity-Modells einzureichen, und nach Bedarf mussten auch Tags hinzugefügt werden, so dass ich die Ansicht und die Aktionsmethode aktualisiert habe, um stattdessen ein View-Model zu verwenden. Wie folgt aus:Warum muss mein Viewmodel-Name 'Model' sein?

[HttpPost] 
[ValidateAntiForgeryToken] 
public ActionResult Create(PostwTagsVM post) 
{ 
} 

Überraschenderweise war das Modell null.I nicht herausfinden konnte, warum, aber dann das Objekt umbenennen entschied wie folgt:

[HttpPost] 
[ValidateAntiForgeryToken] 
public ActionResult Create(PostwTagsVM model) 
{ 
} 

Überraschenderweise ich die Daten im Modell erhalten jetzt. Ich weiß, dass ich so arbeiten kann, aber wenn ich wirklich ein anderes Modell als Modell nennen müsste. Was passiert hier?

Antwort

3

Es muss nicht haben model benannt.

Wenn im ersten Fall, Ihr Modell ist null, sein, weil Ihr PostwTagsVM Modell eine Eigenschaft post Namen enthält.

Der Parameter kann, was Sie wollen genannt werden, mit der Ausnahme, dass sie nicht die gleichen Namen wie eine der Eigenschaften in Ihrem Modell sein können.

Der Grund dafür ist, dass Ihre Form würde ein Name/Wert-Paar werden zurückschicken, die (sagen wir) post=someValue ist. Die DefaultModelBinder sucht nach einem passenden Namen, setzt den Wert der Eigenschaft Post-someValue benannt, aber dann findet auch ein Parameter post genannt und versucht, das zu someValue zu setzen, die nicht (weil Sie nicht PostwTagsVM post = "someValue"; tun können), und das Modell wird null .

+0

Ja. Vielen Dank. Neues Konzept in meiner Tasche. – Mash

Verwandte Themen