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());
}
}
Index.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>
非常感谢
答案 0 :(得分:2)
刚做了一个快速测试,似乎它必须是属性而不是字段。
所以这应该有效:
public class Person
{
public string FirstName { get; set; }
}