提交按钮不提交

问题描述:

有趣的问题。提交按钮不提交

在项目范围更改中,我将一个应用程序分为两个应用程序。我创建了一个新项目,而不是试图将现有的应用程序分解为两个,并重用了以前编写的大部分代码。我陷入了让我把头发拉出来的最后一个错误。

我有一个项目列表,每行都有一个复选框,以允许用户一次处理多行。我有一些jQuery验证逻辑,以确保在下拉列表中选择了一个选项,并且至少选择了一行。这有效,但是当我点击提交按钮时似乎没有发生。我甚至在函数的第一行代码中设置了一个断点,并且它从不被触发。代码与将动作从Display更改为Index的例外情况相同。有什么想法吗?

代码如下:

<% using (Html.BeginForm("Index", "Timesheet", FormMethod.Post, new { Id = "form1" })) 
    { %> 
<%= Html.DropDownList("DropDownAction", new SelectList(Model.Actions, "Value", "Text"), "(Select)", new { Class = "required" })%> 
<input type="submit" value="Submit" /> 
.... 
<% } %> 

TimesheetController.cs

// 
    // GET: /Timesheet/ 
    [Authorize] 
    public ActionResult Index() 
    { 
     .... 
    } 

    // 
    // POST: /Timesheet/ 
    [HttpPost, Authorize] 
    public ActionResult Index(int[] CbSelect, string DropDownAction, SupervisorCredentials user) 
    { 
     foreach (int id in CbSelect) 
     { 
      ... 

     } 

     return RedirectToAction("Index"); 
    } 

生成的HTML:

<form Id="form1" action="/Timesheet" method="post"><select Class="required" id="DropDownAction" name="DropDownAction"><option value="">(Select)</option> 
<option value=" ">Approve</option> 
<option value="P">Paper Signature</option> 
<option value="A">Absent Employee</option> 
</select> 
<input type="submit" value="Submit" /> 

更新:我删除了jQuery,现在我得到一个空例外。我发布的值是DropDownAction=P&CbSelect%5B%5D=274680&CbSelect%5B%5D=275744。为什么不能public ActionResult Index(int[] CbSelect, string DropDownAction)工作?我在的DropDownActionnull中得到正确的值。

不知道为什么,但显然在我的jQuery验证部分,我有debug: true。看起来好像阻止了实际提交表单。我不知道那是如何实现的。我没有添加它。尽管表格现在可以工作了。

+0

您能否详细说明您如何解决这个问题? – Shimmy 2013-04-29 13:02:11

+0

这已经超过2年前了...除了我在那里之外不再有了。 – 2013-04-29 14:42:13

+0

看看[这个](http://stackoverflow.com/questions/16193615/asp-net-mvc-form-doesnt-submit-to-the-right-action)的问题? – Shimmy 2013-04-29 15:35:34

它可能是什么实际上在表单中发布,与MVC期望给出Action的方法签名不符。如果它甚至没有发布(即永远不会访问服务器,可以使用萤火虫或类似软件进行验证),那么您的视图的HTML输出是什么样的?

+0

如何验证发送的内容?我添加了生成的HTML。就像我说的,这在我从之前的应用程序中复制过来。 – 2010-11-08 22:09:36

调试这些类型的情况可能非常令人沮丧。让自己得到一个像http://www.fiddler2.com/fiddler/version.asp这样的工具来启动它,它会监控所有的网络请求,这样你就可以很容易地看到回应是什么,看看你的表单是否真正提交。

+0

好吧,没有提交。我将开始删除jQuery的东西,直到它工作。 – 2010-11-09 18:36:54

您是否更改了默认路由?

另外,您发布的html没有关闭</form>标签。它在吗?

+0

没有改变路由,是的结局在那里。我今天晚些时候会检查Eric的建议。 – 2010-11-09 14:13:25