部分ビューとして使用するフォームを作成しました。
「保存」アクションにブレークポイントを配置しました。送信ボタンをクリックすると、データが検証されますが、アクションに到達することはなく、代わりにIndex
アクションに数回到達します!
コードは次のとおりです。
@model Models.Category
@using (Html.BeginForm("Save", "Categories", FormMethod.Post))
{
@Html.AntiForgeryToken()
<fieldset>
<legend>Category</legend>
@Html.HiddenFor(model => model.CategoryId)
<p>@((Model.CategoryId > 0 ? "Edit" : "New") + " category")</p>
<div class="editor-label">
@Html.LabelFor(model => Model.Title)
</div>
<div class="editor-field">
@Html.EditorFor(model => Model.Title)
@Html.ValidationMessageFor(model => Model.Title)
</div>
<div class="editor-label">
@Html.LabelFor(model => Model.Description)
</div>
<div class="editor-field">
@Html.EditorFor(model => Model.Description)
@Html.ValidationMessageFor(model => Model.Description)
</div>
<p>
<input type="submit" value="Save">
@Html.ValidationSummary(true)
</p>
</fieldset>
}
アクション:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Save(Category category)
{
throw new Exception("Exception has been thrown!");
}
これは、「保存」を押したときに何が起こるかのスクリーンショットです。検証エラーが表示されますが、Save
アクションは呼び出されず、例外もスローされません。
代わりに、Index
アクションがトリガーされます。
問題を追跡するために他に何を確認できますか? ページをインデックスにリダイレクトしているのは誰ですか???
ここで出力 HTML を確認できます。