如何使用Html.TextBoxFor设置默认值?

时间:2010-06-14 04:41:44

标签: c# asp.net-mvc-2 html-helper

简单的问题是,如果您使用ASP.NET MVC Framework 1中的Html Helper,则很容易在文本框上设置默认值,因为存在重载Html.TextBox(string name, object value)。当我尝试使用 Html.TextBoxFor 方法时,我的第一个猜测是尝试以下哪些不起作用:

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

我现在应该坚持使用Html.TextBox(字符串,对象)吗?

13 个答案:

答案 0 :(得分:337)

你可以试试这个

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

答案 1 :(得分:58)

这适用于MVC3&amp; MVC4

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

如果你想让它成为一个隐藏的领域

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

答案 2 :(得分:31)

事实证明,如果你没有在控制器中为View方法指定Model,它就不会为你创建一个具有默认值的对象。

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

答案 3 :(得分:20)

默认值将是Model.Age属性的值。这就是重点。

答案 4 :(得分:16)

您可以这样做:

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

或更好,如果模型为null,这将切换到默认值'0',例如,如果编辑和创建具有相同的视图:

@Html.TextBoxFor(x => x.Age, new { @Value = (Model==null) ? "0" : Model.Age.ToString() })

答案 5 :(得分:11)

value =“0”将为@ Html.TextBoxfor

设置默认值

它区分大小写 “v”应该是资本

以下是工作示例:

@Html.TextBoxFor(m => m.Nights, 
    new { @min = "1", @max = "10", @type = "number", @id = "Nights", @name = "Nights", Value = "1" })

答案 6 :(得分:8)

使用@Value是一种黑客行为,因为它会输出两个属性,例如:

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

你应该这样做:

@Html.TextBox(Html.NameFor(p => p.FirstName).ToString(), "foo")

答案 7 :(得分:8)

这是我如何解决它。如果您也使用它进行编辑,则此方法有效。

@Html.TextBoxFor(m => m.Age, new { Value = Model.Age.ToString() ?? "0" })

答案 8 :(得分:6)

这项工作对我来说

ButterKnife.apply(listTextView, SET_TEXT);

答案 9 :(得分:5)

如果您有编辑和添加的部分页面表单,那么我使用默认值为0的技巧是执行以下操作:

@Html.TextBox("Age", Model.Age ?? 0)

这样,如果未设置,则为0,如果存在,则为实际年龄。

答案 10 :(得分:5)

这对我有用,这样我们将默认值设置为空字符串

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

答案 11 :(得分:0)

尝试这一点,即删除新的{}并将其替换为字符串。

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

答案 12 :(得分: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");