2013-02-12 2 views
3

컨트롤러에서 사용자가 처음 선택하는 매개 변수를 기반으로 목록을 필터링합니다. 그것은 검색 엔진과 같습니다.특정 조건에서 빈 메시지 표시 (빈 목록)

목록이 0 값을 반환 할 가능성이 있습니다. 이것은 오류가 아니지만 오류 메시지처럼 어떤 종류의 메시지를 표시하고 싶습니다. 그러나 지금까지 발견 한 모두는 예외가 필요한 C#에서 ModelState 또는 ModelStateDictionary를 사용하고 있습니다. 그러나 이것도 예외는 아니며 조건 일 뿐이므로 조금 혼란 스럽습니다.

if(listOBJS.count == 0) 
    { 
     // DISPLAY THE ERROR! 
     PopulateDDL1(); 
     PopulateDDL2(); 
     return View(listOBJS); 
    } 

오른쪽, 내가 원하는 일에 대해 할 것을 : 당신이 시각적으로 내가 원하는 볼 수 있도록

나는 코드의 비트를 기록합니다. 어떻게하면 될까요? 조언을 주셔서 감사합니다.

답변

4

ModelState는 예외가 필요하지 않습니다. ModelState 오류를 원하는 메시지와 함께 추가하고 ModelState.isValid를 검사하여 진행할지 여부를 결정하는 일반적인 방법을 사용하거나 오류를 표시하기 위해보기로 돌아갈 수 있습니다.

ModelState.AddModelError("", "Your Error Message"); 

다른 방법으로는 구멍에 메시지를 ViewBag 또는 ViewData을 사용뿐만 아니라 수 있습니다. 당신이 모델을 통과하지하고 그냥 ViewBag에 메시지를 전달하고보기에서 확인할 수 있습니다 ModelState 확인하지 않으려면

ViewBag.ErrorMessage = "Your Error Message"; 
ViewData["ErrorMessage"] = "Your Error Message"; 

는 다음보기에 그들은

@Html.ValidationMessage("ModelName") 
@ViewData["ErrorMessage"] 
@ViewBag.ErrorMessage 
+0

오, 나는 이것을 시도 할 것이다! 언급했듯이 문자열을 허용하는 오버로드가 있습니다. 나는 너를 새롭게 지킬거야! – hsim

+0

글쎄, 그 2 작동하는 것,하지만 아무것도 웹 페이지에 표시되지 않습니다. .cshtml 파일에도 무언가를 설정해야합니까? – hsim

+0

@ HervéSimard 네, 물론 위의 편집을 참조하십시오 –

1

를 표시 할 수 있습니다 그것의 가치를 위해. 거기에 있다면보기에 표시하십시오.

컨트롤러 :

public FileResult Download(string fileName) 
{ 
    if (string.IsNullOrEmpty(fileName) || !File.Exists(fileName)) 
    { 
     ViewBag.Error = "Invalid file name or file path"; 
     RedirectToAction("Index"); 
    } 

    // rest of the code 
} 

인덱스보기

@if (ViewBag.Error != null) 
{ 
    <h3 style="color:red">@ViewBag.Error</h3> 
}