0

我正在开发一个示例 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
);
4

2 回答 2

2

您希望名称与控制器上的参数相匹配,所以我相信它应该是这样的

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

笔记:

  1. 尽管您在路由参数上指定了 UrlParameter.Optional id,但它并不是真正的可选,除非您在控制器操作中将其设为可空(即int? id)。
  2. 通常,对于不会更改服务器上任何内容的 HTTP 请求,您应该使用 GET 而不是 POST,这里似乎就是这种情况。
于 2012-09-21T16:36:08.043 回答
0

您应该使用第二种方法,但不要FormsCollection使用:

GetDetails(int NumericTextBox)

参数必须与输入框同名。

于 2012-09-21T16:36:06.403 回答