Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Can';t让模型绑定在MVC2中工作_C#_Asp.net Mvc 2 - Fatal编程技术网

C# Can';t让模型绑定在MVC2中工作

C# Can';t让模型绑定在MVC2中工作,c#,asp.net-mvc-2,C#,Asp.net Mvc 2,文本框的语法 [AcceptVerbs(HttpVerbs.Post)] public ActionResult Create(User UserToCreate) { //Controller action } model.UserName,新的{id=“UserName”,size=“30”})%> 创建时调用正常,但用户对象给出null为什么?帮助程序的TextBoxForhelper方法为输入框分配一个唯一的id,以便MVC可以在您将其发布到服务器时映射属性。如果您覆盖i

文本框的语法

 [AcceptVerbs(HttpVerbs.Post)]
 public ActionResult Create(User UserToCreate)
 {
  //Controller action
 }
model.UserName,新的{id=“UserName”,size=“30”})%>

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

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

  <%: Html.TextBoxFor(model => model.UserName, new {id="UserName", size="30" })%>
model.UserName,新的{size=30})%>
只是澄清一下,MVC使用输入字段的
name
属性映射属性。但是,我怀疑重写
id
属性会影响这一点。您可以检查HTML输出以澄清这一点,名称应该类似于
user.username

编辑


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

帮助程序的
TextBoxFor
方法为输入框分配一个唯一的id,以便MVC可以在您将其发布到服务器时映射属性。如果您覆盖id,则映射将失败,请将文本框代码更改为:

  <%: Html.TextBoxFor(model => model.UserName, new {id="UserName", size="30" })%>
model.UserName,新的{size=30})%>
只是澄清一下,MVC使用输入字段的
name
属性映射属性。但是,我怀疑重写
id
属性会影响这一点。您可以检查HTML输出以澄清这一点,名称应该类似于
user.username

编辑


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

可能是暗中操作,但请删除id=“UserName”部分

如果您的控制器已映射到特定类。像这样的东西应该可以

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

可能是暗箭伤人,但请删除id=“UserName”部分

如果您的控制器已映射到特定类。像这样的东西应该可以

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

您不需要分配id属性。确保视图是强类型的(按用户) 比如:


您不需要分配id属性。确保视图是强类型的(按用户) 比如:



User是一个类,UserToCreate是一个objecti表示属性…我提到了一个属性UserNameUser是一个类,UserToCreate是一个objecti表示属性…我提到了一个属性UserNamemodel绑定应该基于表单元素的“name”,而不是id。。。否?@ek_ny是的,但是,我很确定默认情况下,名称设置为id设置的任何名称(我可能错了)。我更新了我的问题来澄清。我刚刚创建了一个小沙盒应用程序,即使在原始代码中设置了ID,它也能正常工作!无论哪种方式,都不需要包括设置字段的
id
属性。我还注意到你的语法看起来像是MVC2而不是3?我已经更新了你的问题,问题是你把这个标记为MVC3,每个人都根据这个回答了。因此,您可能不理解其中一些答案(因为它们引用了MVC3中引入的
razor
语法)。。。否?@ek_ny是的,但是,我很确定默认情况下,名称设置为id设置的任何名称(我可能错了)。我更新了我的问题来澄清。我刚刚创建了一个小沙盒应用程序,即使在原始代码中设置了ID,它也能正常工作!无论哪种方式,都不需要包括设置字段的
id
属性。我还注意到你的语法看起来像是MVC2而不是3?我已经更新了你的问题,问题是你把这个标记为MVC3,每个人都根据这个回答了。因此,为什么您可能不理解其中的一些答案(因为它们引用了MVC3中引入的
razor
语法)。对于这个问题,很抱歉,您可以用示例告诉我在哪里必须这样做吗?在您的视图顶部,在其他情况下,当您编写时:(model=>model.UserName)MVC不知道模型是用户,也不将发送数据与您的操作绑定在一起。Look:ActionResult Create(User UserToCreate)-您的操作需要用户,如果没有强类型视图,您将发送NoOneKnowsWhat@KamilBędkowski查看对我答案的评论以及更新的问题。OP使用的是MVC2而不是MVC3。对于这个问题,很抱歉,您可以用示例告诉我在哪里必须这样做吗?在您的视图顶部,在其他情况下,当您编写时:(model=>model.UserName)MVC不知道该模型是用户,并且不将发送数据与您的操作绑定。Look:ActionResult Create(User UserToCreate)-您的操作需要用户,如果没有强类型视图,您将发送NoOneKnowsWhat@KamilBędkowski查看对我答案的评论以及更新的问题。OP使用的是MVC2而不是MVC3。
@model User