Как установить значение по умолчанию с помощью Html.TextBoxFor?
простой вопрос, если вы используете HTML-помощник из ASP.NET MVC Framework 1 легко установить значение по умолчанию для текстового поля, потому что есть перегрузка Html.TextBox(string name, object value)
. Когда я попытался использовать Html.TextBoxFor метод, моя первая догадка заключалась в том, чтобы попробовать следующее, что не сработало:
<%: Html.TextBoxFor(x => x.Age, new { value = "0"}) %>
Я должен просто придерживаться Html.Текстовое поле (строка, объект) на данный момент?
12 ответов:
Это должно работать для MVC3 & MVC4
@Html.TextBoxFor(m => m.Age, new { @Value = "12" })
Если вы хотите, чтобы это было скрытое поле
@Html.TextBoxFor(m => m.Age, new { @Value = "12",@type="hidden" })
получается, что если вы не укажете модель для метода View в своем контроллере, он не создаст для вас объект со значениями по умолчанию.
[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"); }
Вы можете просто сделать :
<%= Html.TextBoxFor(x => x.Age, new { @Value = "0"}) %>
или лучше, это переключится на значение по умолчанию '0', если модель равна нулю, например, если у вас есть один и тот же вид для редактирования и создания :
@Html.TextBoxFor(x => x.Age, new { @Value = (Model==null) ? "0" : Model.Age.ToString() })
значение="0" будет установлено значение по умолчанию для @HTML-код.TextBoxfor
его регистр "v" должно быть прописным
Ниже приведен рабочий пример:
@Html.TextBoxFor(m => m.Nights, new { @min = "1", @max = "10", @type = "number", @id = "Nights", @name = "Nights", Value = "1" })
используя
@Value
- это хак, потому что он выводит два атрибута, например:<input type="..." Value="foo" value=""/>
вы должны сделать это вместо:
@Html.TextBox(Html.NameFor(p => p.FirstName).ToString(), "foo")
вот как я это решил. Это работает, если вы также используете это для редактирования.
@Html.TextBoxFor(m => m.Age, new { Value = Model.Age.ToString() ?? "0" })
Если у вас есть частичная форма страницы для редактирования и добавления, то трюк я использую по умолчанию значение
0
сделать следующее:@Html.TextBox("Age", Model.Age ?? 0)
это
0
если не задано или фактический возраст, если он существует.