我通过FormCollection将表单值发送给控制器,我还将一个按钮作为字符串传入,控制器使用它来确定表单中的哪个按钮已被单击。
它在开发中都工作得很好,但在部署时却不起作用。看起来要么是按钮值没有到达控制器,要么是它的窗体集合。
我已经包含了视图代码:
@using (Html.BeginForm("UpdateExceptionsList", "Exceptions", FormMethod.Post, new { id = "exceptionsForm" }))
{
@*<input type="submit" id="SubmitButton" value="Update Selected" />*@
<button name="button" value="UpdateSelected" id="UpdateSelected" onclick="processUpdate(this)" >Update Selected</button>
<button name="button" value="ExportCsv" onclick="processExportCsv(this)">Export Csv</button>
<button name="button" value="CancelSelected" id="CancelSelected" onclick="processdownload(this)">Cancel Selected </button>
<button name="button" value="RetrySelected" id="RetrySelected" onclick="processretry(this)">Retry Selected </button>
@Html.Hidden("RedirectTo", Url.Action("NoExceptionsExist","Exceptions"))
}和相应的控制器:
[HttpPost]
public ActionResult UpdateExceptionsList(FormCollection result, string button)
{
bool createCsv = false;
bool cancelSelected = false;
bool retrySelected = false;
if (button == "ExportCsv")
{
createCsv = true;
}
else if(button == "CancelSelected")
{
cancelSelected = true;
}
else if (button == "RetrySelected")
{
retrySelected = true;
}
}我是否遗漏了IIS中的一些配置,因为它在Visual Studio中都工作得很好。请帮帮我!
发布于 2013-07-05 01:04:08
不使用直接的button参数,而是与FormCollection一起使用,即
if (result["button"] == "ExportCsv") {
// your logic.
}这将解决您的担忧。
发布于 2013-07-05 02:24:22
你为什么要这么做?为什么不为每个按钮创建一个单独的操作呢?
https://stackoverflow.com/questions/17474887
复制相似问题