2013-06-28 2 views
1

ViewBag을 통해 모델 오류를 전달합니다. 내 컨트롤러에서 ViewBag에 값 (_modelErrors)을 포함하는 List<string>을 전달하고 내보기에이를 표시하려고합니다. 보기에서 디버깅 할 때 내 ViewBag에 값이있는 _modelErrors 사전이 포함되어 있지만 오류가 렌더링되지 않습니다. 내 컨트롤러에서ViewBag ASP.NET MVC

:

ViewBag._modelErrors = _modelErrors; 

내보기에 나는이 모든 방법을 시도하고 아직 마크 업 렌더링되지 않습니다.

@try 
{ 
    foreach (string er in ViewBag._modelErrors) 
    { 
     Response.Write(er.ToString()); 
     @Html.DisplayText(er) 
     @Html.DisplayText(er.ToString()) 
     @er.GetType() 
     @er.ToString(); 
     er.ToString(); 
    } 
} 
catch(Exception e){} 

답변

3

그건 더러운 코드입니다. 친구 야! @Html.ValidationSummary@Html.ValidationMessageFor

잘 살펴보십시오, 여기에 몇 가지 코드를 명확하게 물건 : 또한

[HttpPost] 
public ActionResult MyAction(ModelClass inputModel) 
{  
    if (ModelState.IsValid) 
    { 
     //for example we're trying to save our data to db 
     var result = _myRepository.saveStuff(inputModel); 

     if (result) 
      return RedirectToAction("someAction"); 

     ModelState.AddModelError(string.Empty, "An error occured, check input data");   
    }  
    return View(inputModel); 
} 

당신이 (모델 필드 이름 인) 키를 지정할 수 있습니다 대신 String.Empty로의 -> '당신 때문에 지정된 필드 (기본적으로) 아래에 오류 메시지가 표시되지만 기본적으로 사람들은 유효성 검사 요약 (@Html.ValidationSummary(true))에서 속성 오류를 제외하고 있습니다. 따라서 해당 필드에 일반적인 오류가 발생합니다.

(string er in (List<string>)(ViewBag._modelErrors)) 

그러나이 나쁜 연습 말했다 : it'l이

+0

나는 알고 있습니다. 내보기의 대부분은 Html.ValidationMessageFor를 사용하여 잘 작동하지만,이 인스턴스에서는 ViewBag를 사용해야합니다. –

+1

이것은 좋은 충고입니다. OP가 자신의 문제를 해결할 수 있도록 답을 넓힐 수 있습니까? 그가 당신이해야한다고 생각하는 것을 구현할 수 있습니까? –

+0

@BillGreer가 코드를 추가했습니다. '@ Html.ValidationSummary' 생성 태그에서 ModelState에 수동으로 추가 한 오류가 표시됩니다. – Sergio

1

사용이 도움 바랍니다. 또한 이런 식으로 예외를 잡는 것은 너무 잘못되었습니다 ...

+0

"값이있는 _modelErrors 사전 포함"에 대해 잘 모르는 경우 알려주십시오. 아마도 이것을 IDictionary 으로 캐스팅하는 것이겠습니까? (예를 들어 OP가 보여주는 것으로 판단 할 때 문언에 너무 멀리 읽지 않는다면 나는 아마있을 것이다; p) –

+0

나는 뷰백에 넣은 객체를 입력하지 않는다. 샘플에서는 키/값과 같은 사전 속성에 대한 언급이 없습니다. – YD1m

관련 문제