2010-05-14 10 views
5

Rozkręcam się na ASP.NET MVC i sprawdzam, jak generuję komunikaty w widoku. Jaki jest najlepszy sposób na zrobienie czegoś takiego? Pomocnicy? Sterownica? Lub tak jak jest?Najlepsza praktyka dla warunkowego wyjścia w ASP.NET MVC?

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

Odpowiedz

5

chciałbym użyć pomocnika 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(); 
    } 
} 

aw widzenia:

<%= Html.GetMessage() %> 

Uwaga: nie zapomnij html zakodować wartość wiadomości, jeśli zdecydujesz się użyć swoich kodować tak, jak jest.

+0

Darin, Podoba mi się to podejście, ponieważ byłoby bardzo "łatwo" zawsze dodawać domyślnie <% = Html.GetMessage()%> i tylko "zapomnieć" o tym. wtedy logika kontrolera może zdecydować, czy dodać coś do ViewData ["message"]. teraz, gdyby był tylko sposób łatwego zdefiniowania klucza dla danych widoku (innego niż "wiadomość"), to byłby to niezawodny samowystarczalny, mały pomocnik :) edycja - to oczywiście dodatkowy do pomocnika można dodać parametr, aby zdefiniować ten atrybut - czy istnieje "lepszy" sposób? –

+0

To wygląda świetnie, dzięki za przykład. – RyanW

1

Myślę, że warunkiem takim jak to, co masz, jest najprostsze podejście. Kontrola wydaje się nieco zbyt "ciężka". Może metoda pomocnika, jeśli często ją powtarzasz.

Powiązane problemy