【问题标题】:Submit button doesn't submit提交按钮不提交
【发布时间】:2011-05-06 21:53:50
【问题描述】:

有趣的问题。

在项目范围变更中,我将一个应用程序拆分为两个应用程序。我创建了一个新项目,而不是试图将现有应用程序分成两部分,并重用了许多以前编写的代码。我解决了让我拔头发的最后一个错误。

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

【问题讨论】:

    标签: asp.net-mvc form-submit


    【解决方案1】:

    不知道为什么,但显然在我的 jQuery 验证部分,我有 debug: true。看起来这会阻止表单实际提交。我不知道那是怎么到那里的。我没有添加它。不过该表单现在可以使用了。

    【讨论】:

    • 你能详细说明你是如何解决这个问题的吗?
    • 这是 2 年前的事了……除了我在上面,再也没有了。
    • 看看this有问题吗?
    【解决方案2】:

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

    【讨论】:

    • 好的,什么都没有提交。我将开始删除 jQuery 的东西,直到它工作为止。
    【解决方案3】:

    很可能实际在表单中发布的内容与 MVC 期望的内容不匹配,因为您的 Action 的方法签名。如果它甚至根本没有发布(即从不访问服务器,可以使用 firebug 或类似方法进行验证),您的视图的 HTML 输出是什么样的?

    【讨论】:

    • 如何验证发送的内容?我添加了生成的 HTML。就像我说的,这在我复制的上一个应用程序中有效。
    【解决方案4】:

    您是否更改了默认路由?

    此外,您发布的 html 没有结束 &lt;/form&gt; 标记。有吗?

    【讨论】:

    • 没有改变路由,是的,结尾在那里。我将在今天晚些时候查看 Eric 的建议。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-29
    • 2011-04-07
    • 1970-01-01
    • 2014-03-23
    • 1970-01-01
    • 1970-01-01
    • 2014-01-31
    相关资源
    最近更新 更多