Pro Asp.Net MVC 4(第 535 页):
字符串参数用于搜索视图数据、ViewBag 和视图模型,以找到可用作输入元素基础的相应数据项。因此,例如,如果您调用
@Html.TextBox("DataValue")
,MVC 框架会尝试查找与键 DataValue 对应的某些数据项。检查以下位置: • ViewBag.DataValue • @Model.DataValue
Book 指出,采用单个字符串参数的 Html.TextBox 的重载会同时检查ViewData
和查看模型以获得显示值。但经过一番试验后,它似乎只检查ViewData
一个值,而不是一个视图模型。
因此,在从属性生成的输出Html.TextBox
中value
设置为空字符串:
public class Person
{
public string FirstName = "Leila";
}
*.cshtml:
@model HelperMethods.Models.Person
...
@Html.TextBox("FirstName")
输出:
...
<input id="FirstName" name="FirstName" type="text" value="" />
那么这本书是错误的并且TextBox(HtmlHelper, String)
只检查ViewData
还是它也检查视图模型?
更新:
public class Person
{
public string FirstName = "Leila";
}
public class HomeController : Controller
{
public ActionResult Index()
{
return View((object)new Person());
}
}
索引.cshtml:
@model Mvc4.Controllers.Person
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Index</title>
</head>
<body>
@Html.TextBox("FirstName")
</body>
</html>
非常感激