2009-07-30 7 views
0
public ActionResult TestControl() 
    { 
     return PartialView(); 
    } 

    [AcceptVerbs(HttpVerbs.Post)] 
    public ActionResult TestControl(FormCollection form) 
    { 
     if(!IsValid(form)) 
     { 
      ModelState.AddModelError("_FORM", "Some error"); 
     } 
     return Redirect(Request.UrlReferrer.AbsoluteUri);; 
    } 

投稿にエラーがない場合は正常に動作します。しかし、いくつかのエラーを追加すると、どのようにして現在のモデル状態をTestControl()メソッドで取得できますか?RenderActionとModelStateの問題

答えて

0

私はこの同じ問題を抱えており、ValidationApplicationBlockと小さな関数を使ってこれを得ました。デビッド・ヘイデンのサイトを参照からの支援(http://www.davidhayden.com/

if (thread.HasErrors) 
       { 
        AddValidationResults(thread.Errors, ViewData.ModelState, ValueProvider); 
        return View(thread); 
       } 

を持つすべてはその後、私は持っている私のBaseController内側:

modelState.SetModelValue 

乾杯、

protected static void AddValidationResults(ValidationResults results, 
     ModelStateDictionary modelState, IDictionary<string,ValueProviderResult> valueProvider) 
{ 
    foreach (ValidationResult result in results) 
    { 
     modelState.AddModelError(result.Key,result.Message); 
     modelState.SetModelValue(result.Key, valueProvider[result.Key]); 
    } 
} 

キーは二行目であります

アンドリュー

+0

いいえ、私は別の問題について話します。 ModelState.AddModelError( "_ FORM"、 "Some error")の後。 私はModelState.Count == 1 を持っていますが、TestControl() 私はModelState.Count == 0を持っていますが、私は理由を理解していますが、TestControl(FormCollectionフォーム)のModelStateを復元する方法がわかりません。 – dotneter

関連する問題