2010-05-14 9 views
5

ASP.NET MVC에서 램파드를 실행하고 뷰에서 메시지를 출력하는 방법을 살펴 봅니다. 이런 식으로하는 가장 좋은 방법은 무엇입니까? 도우미? 통제 수단? 아니면 그대로?ASP.NET MVC에서 조건부 출력을위한 최상의 방법은 무엇입니까?

<% if (ViewData.ContainsKey("message") && !string.IsNullOrEmpty(ViewData["message"].ToString())) { %> 
    <div class="notice"> 
     <%= ViewData["message"] %> 
    </div> 
<% } %> 

답변

5

나는 HTML 도우미 사용합니다 :

public static class HtmlExtensions 
{ 
    public static string GetMessage(this HtmlHelper htmlHelper) 
    { 
     var message = htmlHelper.ViewData["message"] as string; 
     if (string.IsNullOrEmpty(message)) 
     { 
      return string.Empty; 
     } 
     var builder = new TagBuilder("div"); 
     builder.AddCssClass("notice"); 
     builder.SetInnerText(message); 
     return builder.ToString(); 
    } 
} 

을하고보기 :

<%= Html.GetMessage() %> 

비고 : 당신이 당신을 사용하기로 결정하는 경우 인코딩에게 메시지의 값을 HTML로 잊지 마세요 코드 방법.

+0

Darin, 기본적으로 <% = Html.GetMessage() %>를 모든보기에 추가하고 '잊어 버리기'때문에 매우 쉽습니다. 컨트롤러 로직은 ViewData [ "message"]에 아무 것도 추가할지 결정할 수 있습니다. 이제 viewdata ('message'이외의)에 대한 키를 쉽게 정의 할 수있는 방법이 있다면 다음과 같이 확장 가능한 작은 도우미가 될 것입니다. 편집 - 물론 추가로 가정합니다. 매개 변수가 도우미에 추가되어 해당 속성을 정의 할 수 있습니다 - 또는 '더 나은'방법이 있습니까? –

+0

예를 들어 보겠습니다. – RyanW

1

나는 당신이 가진 것과 같은 조건이 가장 단순한 접근이라고 생각합니다. 컨트롤은 이것을 위해 너무 무거워 보입니다. 어쩌면 당신이 그것을 많이 반복하는 것을 발견한다면 도우미 방법 일 수 있습니다.

관련 문제