Как установить значение по умолчанию с помощью 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 180

12 ответов:

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

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

Это должно работать для 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");
}

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

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

<%= 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 если не задано или фактический возраст, если он существует.

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

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

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

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

попробуйте и это, то есть удалите new { } и замените его строкой.

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