0
<% using (Html.BeginForm("Create", "User", FormMethod.Post, new { id = "frmCreateUser", name = "frmCreateUser" })){%>

我正在尝试将表单数据发送到控制器,其中Create方法名称是方法名称,user方法是控制器名称。方法的语法

 [AcceptVerbs(HttpVerbs.Post)]
 public ActionResult Create(User UserToCreate)
 {
  //Controller action
 }

文本框的语法

  <%: Html.TextBoxFor(model => model.UserName, new {id="UserName", size="30" })%>

创建时调用正常,但用户对象给出 null 为什么?

4

3 回答 3

2

helper 方法为输入框分配一个唯一的TextBoxForid,以便 MVC 可以在您将其发布到服务器时映射属性。您覆盖 id 因此您的映射将失败,请将您的文本框代码更改为:

<% Html.TextBoxFor(model => model.UserName, new { size = 30 }) %>

澄清一下,MVC 使用name输入字段的属性映射属性。但是,我怀疑覆盖该id属性会影响这一点。您可以检查 HTML 输出以澄清这一点,名称应类似于user.username.

编辑

将您的代码沙箱化到一个小型 MVC3 项目中,它对我来说效果很好(即使设置了 id!)。查看您使用的标签会显示您使用 MVC2 而不是 3?

于 2012-07-03T12:51:14.853 回答
1

您不需要评估 id 属性。确保您的视图是强类型的(由用户),例如:

@model User
于 2012-07-03T12:56:08.347 回答
0

可能是在黑暗中刺伤,但删除 id="UserName" 部分。

如果你的控制器,被映射到一个特定的类。这样的事情应该没问题。

@model  SomeSite.ViewModels.VM_User    

@Html.TextBoxFor(model => model.UserName, new { Class = "ui-corner-all FormElement ui-widget-content" })
于 2012-07-03T12:52:20.423 回答