2009-07-30 3 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과 작은 함수를 사용하여 이것을 얻었다. 데이비드 헤이든의 사이트를 참조 도움으로 모든 그런

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

(http://www.davidhayden.com/)

내 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, 그리고 왜 이해하지만 어떻게 ModelContent (FormCollection 양식)에 있던 복원 모르겠다. – dotneter

관련 문제