1

そのため、Razorビュー内のモデルエラーにアクセスするのに問題があります。

私のコントローラーでは、ModelStateが無効であるか、他のカスタム検証に合格しない場合、次のようなモデルエラーを追加します。ModelState.AddModelError("ModelState", "Please fill out all required fields.");

次に、次のようなリダイレクトを返します。

return RedirectToAction("Register", "Account");

かなり単純なように見えますが、モデルの状態エラーにアクセスし、それらをループして、それぞれを個別spanのビューに追加しようとすると、何も表示されません。ビューのコードは次のとおりです。

@foreach (var error in ViewData.ModelState.Values.SelectMany(modelState => modelState.Errors))
{
    <span>@error.ErrorMessage</span>
    <br />
}

私はここで何か間違ったことをしているのですか、それとも私がすべきことをしていないのですか?

4

1 に答える 1

2

アクションにリダイレクトするのではなく、同じビューを返すだけです。

///
/// Displays form to edit model
///
public ActionResult Edit(int id)
{
    MyModelClass m = new MyModelClass();
    return View(m);
}

[HttpPost]
public ActionResult Edit(MyModelClass m)
{

    if( !ModelState.IsValid )
    {
        // Got error, return view
        return View(m);
    }
    return RedirectToAction("/mymodel/success");
}

更新:ModelState.IsValid-タイプミス:)

于 2012-06-24T18:51:44.943 に答える