我通过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中都可以正常工作。 请帮忙!!!
答案 0 :(得分:1)
不使用直接button
参数,而是使用FormCollection
,即
if (result["button"] == "ExportCsv") {
// your logic.
}
这将解决您的问题。
答案 1 :(得分:0)
你为什么要这样做?为什么不为每个按钮创建单独的操作?