简单的问题,如果你使用ASP的Html Helper。NET MVC框架1很容易在文本框上设置默认值,因为有一个重载Html。文本框(字符串名称,对象值)。当我尝试使用Html时。TextBoxFor方法,我的第一个猜测是尝试以下不工作:

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

我应该继续使用Html吗?文本框(字符串,对象)现在?


当前回答

如果你有一个用于编辑和添加的部分页面表单,那么我使用的将默认值设置为0的技巧是:

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

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

其他回答

事实证明,如果你没有在控制器中指定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");
}

value="0"将为@Html设置默认值。TextBoxfor

区分大小写 “v”应该大写

下面是工作示例:

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

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

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

你应该这样做:

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

试试这个:

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

注意@Value有一个大写V

下面是我的解决方法。如果您也使用它进行编辑,那么这是可行的。

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