Ok je viens de découvrir le EditorForModel
dans MVC et je veux savoir quand je devrais l'utiliser au lieu d'un EditorFor
sur chacune de mes propriétés? Et pourquoi lorsque j'ajoute une vue fortement typée, il ne l'utilise pas et crée un EditorFor
sur chaque propriété?
Je suis en retard ... mais merci pour l'info!
Étant donné que la réponse acceptée est une réponse de lien uniquement (et a été supprimée), je pensais que je répondrais en fait à la question dérivée du blog de Brad Wilson : Modèles ASP.NET MVC 2 , Partie 1: Introduction .
Les expressions de modèle sont de simples assistants qui fonctionnent sur le modèle actuel. La ligne DisplayForModel () est équivalente à DisplayFor (model => model).
TL; DR la même idée peut être supposée pour EditorFor(model => model)
et EditorForModel()
; ces méthodes d'assistance réalisent la même chose. EditorForModel()
suppose que l'expression du modèle est @model
qui a été transmis à la vue.
Prenez les modèles suivants et visualisez par exemple:
public class Person
{
public string Name {get; set;}
public Address MailingAddress {get; set;}
}
public class Address
{
public String Street {get; set;}
public String City {get; set;}
public String State {get; set;}
}
Create.cshtml
:
@model MyNamespace.Models.Person
/* So, you need an Editor for the Person model? */
@Html.EditorForModel()
/*the above is equivalent to @Html.EditorFor(model => model) */
/* you need to specify the Address property that the editor accepts? */
@Html.EditorFor(model => model.MailingAddress)
Vous devez l'utiliser lorsque cela est possible, mais parfois vous aurez besoin de la personnalisation de chaque Html.EditorFor
les usages.
Quant à savoir pourquoi les modèles intégrés ne l'utilisent pas, c'est principalement parce qu'ils sont idiots en général, mais aussi parce que, si je me souviens bien, ils doivent enrouler des éléments (comme des lignes de tableau, etc.) autour de chaque Html.EditorFor
.
@ Html.EditorForModel () ?? Et renoncer au plaisir d'écrire votre propre opinion? sourire
Outre le plaisir, le faire comme une habitude est plutôt risqué. Considérez le scénario courant suivant - vous avez une variable bool, disons IsMale dans votre base de données dans votre table client. Eh bien, évidemment, vous ne voulez pas la version par défaut (IsMale avec une case à cocher) - vous voulez probablement quelque chose d'un peu plus convivial, dites une balise {select, Options ....,/select}, non? c'est là que la vue commence vraiment. C'est la personnalisation. Chaque vue est un peu différente. Vous avez le moteur RAZOR, exploitez-le au maximum! À votre avis, vous pouvez remplacer n'importe quoi, ou même taper manuellement un morceau entier de code HTML de votre choix.