Ce qui est une simple explication de la méthode displayfor et displaynamefor dans asp.net?
J'ai une classe
public class Item
{
public int ItemId { get; set; }
[Required(ErrorMessage = "Category is required")]
[Range(1, int.MaxValue, ErrorMessage = "Category is required")]
public int CategoryId { get; set; }
[Display(Name = "Current password")]
[Required(ErrorMessage = "Name is required")]
[StringLength(160)]
public string Name { get; set; }
[Required(ErrorMessage = "Price is required")]
[Range(0.01, 100.00,
ErrorMessage = "Price must be between 0.01 and 100.00")]
public decimal Price { get; set; }
public virtual Category Category { get; set; }
}
Dans mon contrôleur, je passe une instance de cette option pour afficher les
public ActionResult Index()
{
var model = new Item
{
CategoryId = 1,
Name = "aaa",
Price = 2
};
return View("Index", model);
}
puis j'ai essayer d'afficher le nom à l'aide de
@model GenericShop.Models.Item
<p>
@Html.DisplayNameFor(m => m.Name)
</p>
et obtenez l'erreur suivante
Compilateur Message d'Erreur: CS1061:
'Système.Web.Mvc.HtmlHelper' ne contient pas de
une définition pour 'DisplayNameFor' et aucune méthode d'extension
'DisplayNameFor' acceptant un premier argument de type
'Système.Web.Mvc.HtmlHelper' a pu être trouvé
(vous manque une directive using ou une référence d'assembly?)
@Html.DisplayFor(m => m.Name)
fonctionne très bien, mais je ne peux pas voir pourquoi
@Html.DisplayNameFor(m => m.Name)
ne pas.
DisplayFor
affiche la valeur de l'élément de modèle et DisplayNameFor
affiche simplement le nom de la propriété?
Vous devez vous connecter pour publier un commentaire.
Y est presque. 🙂
La DisplayNameFor indique le nom de la propriété ou de la chaîne définie dans l'attribut d'affichage pour le bien.
Puis
@Html.DisplayNameFor(m => m.Name)
montrerait 'nom'.@Html.DisplayNameFor(m => m.Price)
voudrais juste Prix.Notez que vous pouvez également localiser l'attribut d'affichage comme ceci:
Qui à son tour va le chercher dans la MyResources cser fichier. (Si l'installation est faite correctement).
Le Code Html.Méthode displayfor affiche la valeur du champ.
DisplayNameFor(model => model.Field1)
prend le Display(name="abcd") et les estampes de abcd. Si il n'y a pas de nom d'affichage, il va utiliser le nom de la propriété à la place.