ci sono 6 overloads di questo helper:
@Html.EditorForModel()
rende il modello ~/Views/Shared/EditorTemplates/TypeName.cshtml
dove TypeName
è l'esatto nome del tipo del modello di vista. Se il modello di visualizzazione è una raccolta (ad esempio IEnumerable<TypeName>
, IList<TypeName>
, TypeName[]
, ...) ASP.NET MVC esegue automaticamente il rendering del modello di editor corrispondente per ciascun elemento della raccolta. Non è necessario che tu scriva alcun loop nei tuoi punti di vista affinché ciò accada. È gestito dal framework per te.
@Html.EditorForModel("templatename")
Renders ~/Views/Shared/EditorTemplates/templatename.cshtml
invece di basarsi sulla convenzione
@Html.EditorForModel(new { Foo = "bar" })
rende il modello di editor di default, ma passa un ulteriore dei dati della vista in modo che si potrebbe usare all'interno con ViewData["foo"]
o ViewBag.Foo
@Html.EditorForModel("templatename", new { Foo = "bar" })
Renders ~/Views/Shared/EditorTemplates/templatename.cshtml
invece di basarsi sulla convenzione e passa ulteriori dati immagine ad esso che si potrebbe usare all'interno con ViewData["foo"]
o ViewBag.Foo
@Html.EditorForModel("templatename", "fieldprefix")
Renders ~/Views/Shared/EditorTemplates/templatename.cshtml
invece di basarsi sulla convenzione e modifica il contesto di navigazione all'interno di questo modello, il che significa che se ad esempio si ha una chiamata @Html.TextBoxFor(x => x.FooBar)
all'interno di questo modello, si otterrebbe name="fieldprefix.FooBar"
anziché name="FooBar"
@Html.EditorForModel("templatename", "fieldprefix", new { Foo = "bar" })
Renders ~/Views/Shared/EditorTemplates/templatename.cshtml
invece di basarsi sulla convenzione e modifica il contesto di navigazione all'interno di questo modello, il che significa che, ad esempio, se si ha avuto un @Html.TextBoxFor(x => x.FooBar)
chiamata all'interno di questo modello si otterrebbe name="fieldprefix.FooBar"
invece di name="FooBar"
.Passa anche un ulteriore dei dati della vista in modo che si potrebbe usare all'interno con ViewData["foo"]
o ViewBag.Foo
Nota: Il sistema di template cercherà prima per i modelli a ~/Views/XXX/EditorTemplates
dove XXX è il nome del controller che serviva questo punto di vista e se non lo trova, cercherà ~/Views/Shared/EditorTemplates
. Ciò potrebbe consentire una modifica più dettagliata dei modelli. È possibile avere modelli predefiniti nella cartella condivisa che potrebbero essere sovrascritti in base al controller.
fonte
2013-02-26 15:35:18