私が現在取り組んでいるプロジェクトで奇妙なことが起こり始めました。私はすでに簡単で便利な回避策を見つけましたが、完全な回帰テストが必要になるため、大量の既存のコードに触れるという考えは好きではありません。そのため、問題を再現する小さなアプリを作成しましたが、それでも再現できました。詳細は次のとおりです。
1 つのフォームに複数の送信ボタンがあり、ユーザー アクションを区別するためにボタンの値が ActionMethod で使用されます。すべてがうまく機能します。モデルのアクション フィールドに「作成」と「更新」が表示されます。送信イベントに jQuery ハンドラーを配置しない限り、今回は常に「インデックス」を取得し始めています。実際、ハンドラー自体はまだ問題ありませんが、送信ボタンを無効にする 1 行が魔法を実行します。
ここで何が起こっているのか説明できる人はいますか? 前もって感謝します。
ページ (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();
}
}