web-dev-qa-db-fra.com

Comment définir une valeur par défaut avec Html.TextBoxFor?

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?

191
dcompiled

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");
}
31
dcompiled

tu peux essayer ça

<%= Html.TextBoxFor(x => x.Age, new { @Value = "0"}) %>
343
Tassadaque

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" }) 
59
Gokul

La valeur par défaut sera la valeur de votre propriété Model.Age. C'est gentil de l'essentiel.

20
Fyodor Soikin

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() })
16
Chtiwi Malek

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" })
11
user1708302

Ce travail pour moi

@Html.TextBoxFor(model => model.Age, htmlAttributes: new { @Value = "" })
8
Andrew Andriichuk

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")
8
Max Toro

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" })
8
user3738893

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 = "" })
5
eric_eri

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.

5
Harel Seligmann

Essayez aussi, enlevez new {} et remplacez-le par string.

<%: Html.TextBoxFor(x => x.Age,"0") %>
0
Hammad Khan