Asp.net MVC - 将数据发布到控制器

时间:2012-09-21 16:25:17

标签: asp.net-mvc-3

我正在研究一个示例mvc项目,我正在尝试将数据发布到控制器。我已发布样本(见下文),但如果我将[HttpPost]添加到方法中,我会收到'404'错误。

查看:

<% using (Html.BeginForm()) { %>
    <%= Html.Telerik().NumericTextBox()
                .Name("NumericTextBox")
                .Spinners(false)
                .EmptyMessage("ID")
    %>
    <input type="submit" value="Submit" />
<% } %>

控制器:

[HttpPost]
public ActionResult GetDetails(int id)
{
    return View();
}

**I also tried,**
[HttpPost]
public ActionResult GetDetails(FormCollection collection)
{
    return View();
}

路线:

routes.MapRoute(
    "Default", // Route name
    "{controller}/{action}/{id}", // URL with parameters
    new { controller = "Customer", action = "GetDetails", id = UrlParameter.Optional } // Parameter defaults
);

2 个答案:

答案 0 :(得分:2)

您希望名称与控制器上的参数匹配,所以我相信它should be like this

Html.Telerik().NumericTextBox()
            .Name("id")

注意:

  1. 虽然您在id路由参数上指定了UrlParameter.Optional,但除非您在控制器操作中将其设为可为空(即int? id),否则它不是真正可选的。
  2. 通常情况下,对于不会在服务器上进行任何更改的HTTP请求,您应该使用GET而不是POST,这似乎就是这种情况。

答案 1 :(得分:0)

您应该使用第二种方法,而不是FormsCollection,请使用:

GetDetails(int NumericTextBox)

参数必须与输入框的名称相同。