web-dev-qa-db-fra.com

Pourquoi ne pas utiliser Html.EditorForModel ()

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!

28
VinnyG

É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)
22
Carrie Kendall

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.

3
Domenic

@ 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.

0
LongChalk