Html.EditorFor Définir la valeur par défaut

Question de recrue. J’ai un paramètre transmis à une vue de création. Je dois définir un nom de champ avec une valeur par défaut. @ Html.EditorFor (model => model.Id) Je dois définir ce champ de saisie avec le nom Id avec une valeur par défaut transmise à la vue via un lien d’action.

Alors, comment ce champ de saisie – @ Html.EditorFor (model => model.Id) – peut-il être défini avec une valeur par défaut.

Serait le travail suivant ?? Lorsque le nombre 5 est un paramètre, je passe dans le champ de texte pour définir la valeur par défaut.

@Html.EditorFor(c => c.PropertyName, new { text = "5"; }) 

La manière propre de le faire est de passer une nouvelle instance de l’entité créée via le contrôleur:

 //GET public ActionResult CreateNewMyEntity(ssortingng default_value) { MyEntity newMyEntity = new MyEntity(); newMyEntity._propertyValue = default_value; return View(newMyEntity); } 

Si vous souhaitez transmettre la valeur par défaut via ActionLink

 @Html.ActionLink("Create New", "CreateNewMyEntity", new { default_value = "5" }) 

Voici ce que j’ai trouvé:

 @Html.TextBoxFor(c => c.Propertyname, new { @Value = "5" }) 

fonctionne avec un V majuscule, pas un minuscule v (l’hypothèse que la valeur est un mot clé utilisé dans les parameters généralement) Valeur inférieure vs supérieure

 @Html.EditorFor(c => c.Propertyname, new { @Value = "5" }) 

ne marche pas

Votre code finit par ressembler à ça si

  

Valeur vs valeur. Je ne suis pas sûr que j’aime trop ça.

Pourquoi ne pas simplement vérifier l’action du contrôleur si la propriété a une valeur ou non et si elle ne la place pas simplement dans votre modèle de vue avec votre valeur par défaut et la laisser se lier pour éviter que tout ce singe fonctionne dans la vue?

Une meilleure option est de le faire dans votre modèle de vue comme

 public class MyVM { int _propertyValue = 5;//set Default Value here public int PropertyName{ get { return _propertyValue; } set { _propertyValue = value; } } } 

Alors à votre avis

 @Html.EditorFor(c => c.PropertyName) 

travaillera comme vous le voulez (si aucune valeur par défaut ne sera disponible)

Il n’est pas correct de définir la valeur par défaut dans View. La vue doit effectuer un travail d’affichage, pas plus. Cette action rompt l’idéologie du modèle MVC. Donc, le bon endroit pour définir les parameters par défaut – créer une méthode de classe de contrôleur.

Je viens de faire ça (la première réponse de Shadi) et ça marche:

  public ActionResult Create() { Article article = new Article(); article.Active = true; article.DatePublished = DateTime.Now; ViewData.Model = article; return View(); } 

Je pourrais mettre les valeurs par défaut dans mon modèle comme un addict MVC propper: (J’utilise Entity Framework)

  public partial class Article { public Article() { Active = true; DatePublished = Datetime.Now; } } public ActionResult Create() { Article article = new Article(); ViewData.Model = article; return View(); } 

Quelqu’un peut-il voir des inconvénients à cela?

Le @Html.EditorFor() ne devrait-il pas utiliser les atsortingbuts que vous avez mis dans votre modèle?

 [DefaultValue(false)] public bool TestAccount { get; set; } 

ViewBag le dans le ViewBag :

Contoller:

 ViewBag.ProductId 

Vue:

 @Html.TextBoxFor(c => c.Propertyname, new {@Value = ViewBag.ProductId}) 

Dans la méthode constructeur de votre classe de modèle, définissez la valeur par défaut comme vous le souhaitez. Ensuite, dans votre première action, créez une instance du modèle et transmettez-la à votre vue.

  public ActionResult VolunteersAdd() { VolunteerModel model = new VolunteerModel(); //to set the default values return View(model); } [HttpPost] [ValidateAntiForgeryToken] public ActionResult VolunteersAdd(VolunteerModel model) { return View(model); }