2010-05-14 17 views
5

Estoy aumentando la velocidad en ASP.NET MVC y estoy buscando cómo mostrar mensajes en la vista. ¿Cuál es la mejor manera de hacer algo como esto? ¿Ayudantes? Controles? ¿O tal como es?¿Práctica recomendada para la salida condicional en ASP.NET MVC?

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

Respuesta

5

me gustaría utilizar un ayudante 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(); 
    } 
} 

y en la vista:

<%= Html.GetMessage() %> 

Observación: No se olvide de html codificar el valor del mensaje si usted decide utilizar su codificar la forma en que es.

+0

Darin, Me gusta este enfoque, ya que sería muy 'fácil' agregar siempre <% = Html.GetMessage()%> a las vistas por defecto y simplemente 'olvidar'. entonces la lógica del controlador podría decidir si agrega algo a ViewData ["mensaje"]. ahora, si hubiera una forma de definir fácilmente la clave para viewdata (que no sea 'mensaje'), entonces esto sería un pequeño ayudante extensible muy bien incorporado :) editar - supongo que por supuesto un adicional Se puede agregar un parámetro al ayudante para definir ese atributo. ¿O hay una forma "mejor"? –

+0

Esto se ve muy bien, gracias por el ejemplo. – RyanW

1

Creo que una condición como la que tiene es el enfoque más simple. Un control se siente un poco "pesado" para esto. Tal vez un método de ayuda si te encuentras repitiendo mucho.

Cuestiones relacionadas