提交按钮不提交

时间:2010-11-08 21:38:45

标签: asp.net-mvc form-submit

有趣的问题。

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

我有一个项目列表,每行都有一个复选框,允许用户一次处理多行。我有一些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,现在我得到一个null异常。我发布的值为DropDownAction=P&CbSelect%5B%5D=274680&CbSelect%5B%5D=275744。为什么public ActionResult Index(int[] CbSelect, string DropDownAction)不起作用?我在DropDownAction中获得了正确的值,在null中获得了CbSelect

4 个答案:

答案 0 :(得分:3)

不确定原因,但显然在我的jQuery验证部分,我有debug: true。看起来似乎阻止了表单实际提交。我不知道那是怎么到达那里的。我没有添加它。表格虽然现在有效。

答案 1 :(得分:2)

调试这些类型的情况可能非常令人沮丧。让自己像http://www.fiddler2.com/fiddler/version.asp这样的工具启动它,它将监控所有网络请求,以便您可以轻松查看响应是什么,并查看您的表单是否真正提交。

答案 2 :(得分:0)

它可能实际上在表单中发布的内容与MVC对Action的方法签名所期望的内容不匹配。如果它根本不发布(即从未点击过服务器,可以用firebug或类似的方式验证),你的视图的HTML输出是什么样的?

答案 3 :(得分:0)

您是否更改了默认路由?

此外,您发布的html没有结束</form>标记。它在吗?