Asp.net mvc TextBox(HtmlHelper,String)-视图模型是否也在搜索值?

Asp.net mvc TextBox(HtmlHelper,String)-视图模型是否也在搜索值?,asp.net-mvc,asp.net-mvc-4,Asp.net Mvc,Asp.net Mvc 4,Pro Asp.Net MVC 4(第535页): 字符串参数用于搜索视图数据、视图包和视图 模型以查找可用作基本数据的相应数据项 对于输入元素。例如,如果你打电话 @Html.TextBox(“DataValue”),MVC框架试图找到一些 与键数据值对应的数据项。以下 检查位置:•ViewBag.DataValue•@Model.DataValue 书中指出,Html.TextBox的重载(采用单个字符串参数)会同时检查ViewData和view model以获取显示值。但经过一点实验后,它

Pro Asp.Net MVC 4(第535页):

字符串参数用于搜索视图数据、视图包和视图 模型以查找可用作基本数据的相应数据项 对于输入元素。例如,如果你打电话
@Html.TextBox(“DataValue”)
,MVC框架试图找到一些 与键数据值对应的数据项。以下 检查位置:•ViewBag.DataValue•@Model.DataValue

书中指出,Html.TextBox的重载(采用单个字符串参数)会同时检查
ViewData
和view model以获取显示值。但经过一点实验后,它似乎只检查
ViewData
中的值,而不检查视图模型

因此,在从
Html.TextBox
生成的输出中,
value
属性被设置为空字符串:

*.cshtml:

@model HelperMethods.Models.Person
                  ...   
@Html.TextBox("FirstName")
输出:

                  ...
<input id="FirstName" name="FirstName" type="text" value="" />
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>
@model Mvc4.Controllers.Person
@{
布局=空;
}
指数
@Html.TextBox(“名字”)

非常感谢

刚刚做了一个快速测试,似乎它必须是一个属性,而不是一个字段

因此,这应该是可行的:

public class Person 
{
    public string FirstName { get; set; }
}

是的。它不是强类型的,所以可能会发生错误,但如果使用正确,它应该引用您的model FirstName属性。请把你的整个表格都贴出来。是的,刚刚测试过,对我来说也很好。@Dave A:我贴了整个表格。请看update@SimonC例如我把整个表格都贴了。请查看更新beginform仍然缺少漂亮的捕获。我完全错过了!
@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>
public class Person 
{
    public string FirstName { get; set; }
}