Question simple, si vous utilisez l'assistant HTML d'ASP.NET MVC Framework 1, il est facile de définir une valeur par défaut dans une zone de texte, car il existe une surcharge Html.TextBox(string name, object value)
. Lorsque j'ai essayé d'utiliser la méthode Html.TextBoxFor, ma première hypothèse a été d'essayer ce qui suit ne fonctionnait pas:
<%: Html.TextBoxFor(x => x.Age, new { value = "0"}) %>
Dois-je simplement m'en tenir à Html.TextBox (chaîne, objet) pour l'instant?
Il s'avère que si vous ne spécifiez pas le modèle dans la méthode View dans votre contrôleur, il ne crée pas d'objet pour vous avec les valeurs par défaut.
[AcceptVerbs(HttpVerbs.Get)]
public ViewResult Create()
{
// Loads default values
Instructor i = new Instructor();
return View("Create", i);
}
[AcceptVerbs(HttpVerbs.Get)]
public ViewResult Create()
{
// Does not load default values from instructor
return View("Create");
}
tu peux essayer ça
<%= Html.TextBoxFor(x => x.Age, new { @Value = "0"}) %>
Cela devrait fonctionner pour MVC3 & MVC4
@Html.TextBoxFor(m => m.Age, new { @Value = "12" })
Si vous voulez que ce soit un champ caché
@Html.TextBoxFor(m => m.Age, new { @Value = "12",@type="hidden" })
La valeur par défaut sera la valeur de votre propriété Model.Age
. C'est gentil de l'essentiel.
Vous pouvez simplement faire:
<%= Html.TextBoxFor(x => x.Age, new { @Value = "0"}) %>
ou mieux, cela passera à la valeur par défaut '0' si le modèle est nul, par exemple si vous avez la même vue pour l'édition et la création:
@Html.TextBoxFor(x => x.Age, new { @Value = (Model==null) ? "0" : Model.Age.ToString() })
value = "0" définira la valeur par défaut pour @ Html.TextBoxfor
sa casse "v" devrait être capitale
Voici un exemple de travail:
@Html.TextBoxFor(m => m.Nights,
new { @min = "1", @max = "10", @type = "number", @id = "Nights", @name = "Nights", Value = "1" })
Ce travail pour moi
@Html.TextBoxFor(model => model.Age, htmlAttributes: new { @Value = "" })
Utiliser @Value
est un hack, car il génère deux attributs, par exemple:
<input type="..." Value="foo" value=""/>
Vous devriez faire ceci à la place:
@Html.TextBox(Html.NameFor(p => p.FirstName).ToString(), "foo")
Voici comment je l'ai résolu. Cela fonctionne si vous l'utilisez également pour l'édition.
@Html.TextBoxFor(m => m.Age, new { Value = Model.Age.ToString() ?? "0" })
cela a fonctionné pour moi, de cette façon nous avons défini la valeur par défaut sur chaîne vide
@Html.TextBoxFor(m => m.Id, new { @Value = "" })
Si vous avez un formulaire de page partiel pour l'édition et l'ajout, alors l'astuce que j'utilise pour la valeur par défaut de 0
consiste à effectuer les opérations suivantes:
@Html.TextBox("Age", Model.Age ?? 0)
De cette façon, ce sera 0
si non défini ou l’âge réel s’il existe.
Essayez aussi, enlevez new {} et remplacez-le par string.
<%: Html.TextBoxFor(x => x.Age,"0") %>