【发布时间】: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&CbSelect%5B%5D=274680&CbSelect%5B%5D=275744。为什么public ActionResult Index(int[] CbSelect, string DropDownAction) 不起作用?我在DropDownAction 和null 中得到了正确的值CbSelect。
【问题讨论】: