1

部分ビューとして使用するフォームを作成しました。

「保存」アクションにブレークポイントを配置しました。送信ボタンをクリックすると、データが検証されますが、アクションに到達することはなく、代わりに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 を確認できます。

4

5 に答える 5

2

RouteConfig.csファイルに問題が見つかりました。

Indexルーティングを混乱させる間違ったマッピングがあり、間違った設定のために見つからなかった特定のアクションではなく、アクションをデフォルトとして使用したと思います。

于 2013-04-30T05:31:20.267 に答える
0

メソッドでActionandControllerを指定してみてください。BeginForm

Html.BeginForm("Save", "YourController", FormMethod.Post) 
于 2013-04-24T13:46:21.540 に答える
0

これは、ValidateAntiForgeryToken が原因であると思います。アクション メソッドがフォーム リクエストにマップされていない可能性があります。このタグを削除するか、このチュートリアルの説明に従ってこれを実行してください。

また、これを参照してください:

于 2013-04-29T15:55:37.927 に答える