Как установить значение по умолчанию с Html.TextBoxFor?
Простой вопрос: если вы используете 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 (строка, объект) сейчас?
13 ответов
Оказывается, что если вы не укажете метод для метода 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"}) %>
Это должно работать для MVC3 и MVC4
@Html.TextBoxFor(m => m.Age, new { @Value = "12" })
Если вы хотите, чтобы это было скрытое поле
@Html.TextBoxFor(m => m.Age, new { @Value = "12",@type="hidden" })
Значением по умолчанию будет значение вашего Model.Age
имущество. В этом вся суть.
Вы можете просто сделать:
<%= Html.TextBoxFor(x => x.Age, new { @Value = "0"}) %>
или лучше, это переключится на значение по умолчанию '0', если модель пуста, например, если у вас одинаковое представление как для редактирования, так и для создания:
@Html.TextBoxFor(x => x.Age, new { @Value = (Model==null) ? "0" : Model.Age.ToString() })
Это работа для меня
@Html.TextBoxFor(model => model.Age, htmlAttributes: new { @Value = "" })
value="0" установит значение по умолчанию для @Html.TextBoxfor
его чувствительный к регистру "V" должен быть заглавным
Ниже работает пример:
@Html.TextBoxFor(m => m.Nights,
new { @min = "1", @max = "10", @type = "number", @id = "Nights", @name = "Nights", Value = "1" })
Вот как я это решил. Это работает, если вы также используете это для редактирования.
@Html.TextBoxFor(m => m.Age, new { Value = Model.Age.ToString() ?? "0" })
Это сработало для меня, таким образом мы устанавливаем значение по умолчанию для пустой строки
@Html.TextBoxFor(m => m.Id, new { @Value = "" })
С помощью @Value
это хак, потому что он выводит два атрибута, например:
<input type="..." Value="foo" value=""/>
Вы должны сделать это вместо этого:
@Html.TextBox(Html.NameFor(p => p.FirstName).ToString(), "foo")
Если у вас есть частичная форма страницы для редактирования и добавления, то трюк, который я использую для установки значения по умолчанию для 0
это сделать следующее:
@Html.TextBox("Age", Model.Age ?? 0)
Так будет 0
если не задано или фактический возраст, если он существует.
Для .net core 5 значение настройки в htmlAttributes, похоже, не работает. Но вы можете использовать обходной путь:
var ageTextBox = (TagBuilder) Html.TextBoxFor(x => x.Age);
ageTextBox.Attributes.Remove("value");
ageTextBox.Attributes.Add("value", "value you want to set");
Попробуйте также, то есть удалить новый { } и заменить его строкой.
<%: Html.TextBoxFor(x => x.Age,"0") %>