TextBox(HtmlHelper,String) - 是否也在查看视图模型的值?

时间:2013-04-07 20:10:23

标签: asp.net-mvc asp.net-mvc-4

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>

非常感谢

1 个答案:

答案 0 :(得分:2)

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

所以这应该有效:

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