我目前正在处理的项目开始发生一些奇怪的事情。我已经找到了一个简单方便的解决方法,但是我不喜欢接触大量现有代码的想法,因为它需要完整的回归测试。因此,我构建了一个小应用程序来重现该问题,并且仍然能够这样做。以下是一些细节:
单个表单上有多个提交按钮,在 ActionMethod 中使用按钮值来区分用户操作。一切正常 - 我在模型操作字段中得到“创建”和“更新”。除非我在提交事件上放置一个 jQuery 处理程序——这一次我开始一直得到“索引”。实际上处理程序本身仍然可以,但是禁用提交按钮的单行执行了魔术。
有谁能够解释这里发生了什么?提前致谢。
页面(Index.cshtml):
@model MvcButtonTest.Models.HomeData
<html>
<head>
<title>Index</title>
@System.Web.Optimization.Scripts.Render("~/bundles/jquery")
<script>
$(document).ready(function () {
$("form").submit(function (ev) {
// $(":submit", this).attr("disabled", "disabled");
});
});
</script>
</head>
<body>
@using (Html.BeginForm())
{
@Html.EditorFor(model => model.Name)<br />
@Html.EditorFor(model => model.ID)
<input name="Action" type="submit" value="Create" />
<input name="Action" type="submit" value="Update" />
<input name="Action" type="submit" value="Delete" />
}
</body>
</html>
模型 HomeData.cs:
public class HomeData
{
public String Name { get; set; }
public String Action { get; set; }
public Int32 ID { get; set; }
}
控制器 HomeController.cs:
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
[HttpPost]
public ActionResult Index(HomeData data)
{
// data.Action - check if it's Create or Delete
return View();
}
}