Asp.net mvc 3 Asp.net MVC-将数据发布到控制器
我正在进行一个示例mvc项目,在该项目中,我试图将数据发布到控制器。我已经发布了示例(见下文),但若我将[HttpPost]添加到方法中,我将得到“404”错误 视图:Asp.net mvc 3 Asp.net MVC-将数据发布到控制器,asp.net-mvc-3,Asp.net Mvc 3,我正在进行一个示例mvc项目,在该项目中,我试图将数据发布到控制器。我已经发布了示例(见下文),但若我将[HttpPost]添加到方法中,我将得到“404”错误 视图: <% using (Html.BeginForm()) { %> <%= Html.Telerik().NumericTextBox() .Name("NumericTextBox") .Spinners(false)
<% using (Html.BeginForm()) { %>
<%= Html.Telerik().NumericTextBox()
.Name("NumericTextBox")
.Spinners(false)
.EmptyMessage("ID")
%>
<input type="submit" value="Submit" />
<% } %>
路线:
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Customer", action = "GetDetails", id = UrlParameter.Optional } // Parameter defaults
);
您应该使用第二种方法,但不要使用
FormsCollection
,而是使用:
GetDetails(int-NumericTextBox)
参数必须与输入框的名称相同。您希望名称与控制器上的参数匹配,因此我相信:
注:
id
route参数上指定了UrlParameter.Optional,但除非在控制器操作中将其设置为null(即int?id
),否则它不是真正的可选参数找到问题所在是很典型的。你能粘贴视图和控制器的全部代码吗?他正在做测试。在一个真正的应用程序中,他会改变值,所以我认为告诉他使用Get是令人困惑的。此外,如果在url上传递了不同的id,则为文本框使用id将与路由值冲突。在将文本框的名称与参数匹配后,我仍然会收到相同的错误。@CoolArchTek我没有看到任何其他明显的问题。确认:您上面的视图是
GetDetails
,是吗?是的。但现在,一旦我添加了另一个没有任何参数的重载方法,它就开始工作了。public ActionResult GetDetails(){return View();}
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Customer", action = "GetDetails", id = UrlParameter.Optional } // Parameter defaults
);
Html.Telerik().NumericTextBox()
.Name("id")