2011-12-30 7 views
1

ModelStateに関する質問とMVC3の検証エラーメッセージがあります。 私は@Html.ValidationSummary(false)を見て、私のModelオブジェクトからのエラーメッセージDataAnnotationsを表示しています。その後、私の登録アクションコントローラにはModelState.IsValidがありますが、その中にはif(ModelState.IsValid)があります。ModelState.AddModelError(string.Empty, "error...")でモデルステートに追加する別のエラーコントロールがあります。を実行しますが、ModelStateに追加されたメッセージはまったく表示されません。モデル状態のエラーを追加して、リダイレクトをアクションにリダイレクトした後に検証します

これはなぜ発生していますか?

答えて

4

、その後、私はあなたの問題ですRedirectToAction

を行います。リダイレクトすると、モデルの状態値は失われます。モデルステートに追加された値(エラーメッセージを含む)は、現在の要求の存続期間中のみ存続します。リダイレクトすると新しいリクエストになるので、modelstateは失われます。 POSTアクションの通常の流れは、次のとおりです。

[HttpPost] 
public ActionResult Foo(MyViewModel model) 
{ 
    if (!ModelState.IsValid) 
    { 
     // there were some validation errors => we redisplay the view 
     // in order to show the errors to the user so that he can fix them 
     return View(model); 
    } 

    // at this stage the model is valid => we can process it 
    // and redirect to a success action 
    return RedirectToAction("Success"); 
} 
+0

Mmm ... so ..私は戻ってView()を実行する必要がありますか?..ビューは別のコントローラです..(はい、私は知っていますこれは間違っているかもしれませんが、この時点で私はそれを変更する時間がありませんと思っています:S) –

+0

@Phoenix_uy "クイック"フィックスの場合は、ビューを共有ディレクトリに追加します。コントローラ。 – Jesse

関連する問題