0

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

字符串参数用于搜索视图数据、ViewBag 和视图模型,以找到可用作输入元素基础的相应数据项。因此,例如,如果您调用 @Html.TextBox("DataValue"),MVC 框架会尝试查找与键 DataValue 对应的某些数据项。检查以下位置: • ViewBag.DataValue • @Model.DataValue

Book 指出,采用单个字符串参数的 Html.TextBox 的重载会同时检查ViewData查看模型以获得显示值。但经过一番试验后,它似乎只检查ViewData一个值,而不是一个视图模型

因此,在从属性生成的输出Html.TextBoxvalue设置为空字符串

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>

非常感激

4

1 回答 1

2

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

所以这应该工作:

public class Person 
{
    public string FirstName { get; set; }
}
于 2013-04-07T20:42:11.200 回答