Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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
Asp.net mvc 3 Asp.net MVC-将数据发布到控制器_Asp.net Mvc 3 - Fatal编程技术网

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

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)

我正在进行一个示例mvc项目,在该项目中,我试图将数据发布到控制器。我已经发布了示例(见下文),但若我将[HttpPost]添加到方法中,我将得到“404”错误

视图:

<% 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
    ),否则它不是真正的可选参数
  • 通常情况下,对于不会改变服务器上任何内容的HTTP请求,应该使用GET而不是POST,这里就是这种情况

  • 找到问题所在是很典型的。你能粘贴视图和控制器的全部代码吗?他正在做测试。在一个真正的应用程序中,他会改变值,所以我认为告诉他使用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")