ASP.Net MVC模型绑定返回空值

时间:2009-04-23 01:57:38

标签: asp.net-mvc

给出以下标记:

 <form method="post" action="/home/index">
    Username:
    <%= Html.TextBox("UserName")%>
    Password:
    <%= Html.TextBox("Password")%>
    <input id="login" type="button" value="Login" />
    <input id="Submit1" type="submit" value="submit" />
 </form>

你能告诉我为什么在调用我的动作时模型绑定不起作用:

    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult Index(string UserName, string Password)
    {
        //UserName and Password are null!  Why?            
    }

编辑: 表单值已过帐。如果我检查Request.Form属性,我看到正在发布正确的值。

  

?申请表   {用户名= SDF&安培;密码= SDF}       [System.Web.HttpValueCollection]:{UserName = sdf&amp; Password = sdf}       base {System.Collections.Specialized.NameObjectCollectionBase}:{UserName = sdf&amp; Password = sdf}       AllKeys:{string [2]}

5 个答案:

答案 0 :(得分:1)

您是否尝试将Bind属性添加到参数中?

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Index([Bind]string UserName, [Bind]string Password)
{
    //UserName and Password are null!  Why?            
}

答案 1 :(得分:1)

我遇到了类似的问题,结果是由于字段的命名。

<form method="post" action="/company/update/3">
   Name:
   <%= Html.TextBox("Company.Name")%>
   FEIN:
   <%= Html.TextBox("FEIN")%>

   <input type="submit" value="submit" />
</form>

发布到:

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Index(int id, Company company)
{
    //Company.FEIN is null!
}

如果Company.Name是第一个发布的值,这似乎就会发生。

答案 2 :(得分:0)

史蒂夫我有一个类似的问题,我发现它是因为我的模型上的属性键和值,模型绑定器不喜欢。

尝试将UserName更改为user,密码传递并查看问题是否仍然存在。

答案 3 :(得分:0)

您可以尝试在运行此程序时将调试程序附加到MVC源,以查看引擎盖/引擎盖下发生的情况。

答案 4 :(得分:0)

请为您的控件添加名称属性(Html.TextBox(“UserName”))