Как установить значение по умолчанию с Html.TextBoxFor? - PullRequest
189 голосов
/ 14 июня 2010

Простой вопрос: если вы используете Html Helper из ASP.NET MVC Framework 1, легко установить значение по умолчанию для текстового поля, поскольку существует перегрузка Html.TextBox(string name, object value). Когда я попытался использовать метод Html.TextBoxFor , первым делом я решил попробовать следующее, которое не сработало:

<%: Html.TextBoxFor(x => x.Age, new { value = "0"}) %>

Должен ли я сейчас придерживаться Html.TextBox (string, object)?

Ответы [ 12 ]

339 голосов
/ 20 июля 2010

Вы можете попробовать это

<%= Html.TextBoxFor(x => x.Age, new { @Value = "0"}) %>
58 голосов
/ 24 января 2012

Это должно работать для MVC3 и MVC4

 @Html.TextBoxFor(m => m.Age, new { @Value = "12" }) 

Если вы хотите, чтобы это было скрытое поле

 @Html.TextBoxFor(m => m.Age, new { @Value = "12",@type="hidden" }) 
31 голосов
/ 14 июня 2010

Оказывается, что если вы не укажете Model для метода 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");
}
20 голосов
/ 14 июня 2010

Значением по умолчанию будет значение вашего Model.Age свойства.В этом вся суть.

16 голосов
/ 02 августа 2013

Вы можете просто сделать:

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

или лучше, это переключится на значение по умолчанию '0', если модель пуста, например, если у вас одинаковое представление для редактирования и создания:

@Html.TextBoxFor(x => x.Age, new { @Value = (Model==null) ? "0" : Model.Age.ToString() })
11 голосов
/ 28 октября 2014

value = "0" установит значение по умолчанию для @ Html.TextBoxfor

его чувствительный к регистру "v" должен быть прописным

Ниже приведен рабочий пример:

@Html.TextBoxFor(m => m.Nights, 
    new { @min = "1", @max = "10", @type = "number", @id = "Nights", @name = "Nights", Value = "1" })
8 голосов
/ 13 июня 2014

Вот как я это решил. Это работает, если вы также используете это для редактирования.

@Html.TextBoxFor(m => m.Age, new { Value = Model.Age.ToString() ?? "0" })
8 голосов
/ 23 мая 2014

Использование @Value является хаком, потому что он выводит два атрибута, например:

<input type="..." Value="foo" value=""/>

Вы должны сделать это вместо:

@Html.TextBox(Html.NameFor(p => p.FirstName).ToString(), "foo")
6 голосов
/ 19 декабря 2016

Эта работа для меня

@Html.TextBoxFor(model => model.Age, htmlAttributes: new { @Value = "" })
5 голосов
/ 29 января 2016

это сработало для меня, поэтому мы устанавливаем значение по умолчанию для пустой строки

@Html.TextBoxFor(m => m.Id, new { @Value = "" })
...