2011-03-16 17 views
5

tengo una gran opinión de que necesita un poco de lógica condicional para decidir cuál de los diferentes trozos de HTML para la presentación en el medio de la vista. Tengo una propiedad en mi modelo que puede tener varios valores diferentes que determinan el html a emitir.lógica condicional en vista MVC vs vs HtmlHelper acción

Normalmente pondría la lógica condicional en un helper html, pero dado que cada salida es una buena cantidad de html, no estoy seguro de que escapar de estos en un archivo C# sería genial. También podría poner la lógica en la acción y presentar diferentes puntos de vista, pero dado que la mayoría de la vista es la misma, tampoco parece grande. Así que me quedan varias declaraciones if en mi opinión (¿o parcial?) Que también parece fea (y obviamente no es comprobable).

¿Cuál es la mejor manera de hacerlo?

(estoy usando MVC3 en caso de que haya algo nuevo y original que puedo usar!)

+0

Si está utilizando la maquinilla de afeitar, pruebe buscando en Google "ayudantes" Razor declarativa HTML que podrían adaptarse a su situación ... no podría. Pero su nuevo y moderno ;-) – Charlino

Respuesta

3

generalmente pongo trozos visuales separadas en sus propios parciales. Entonces mi vista llama condicionalmente cada parcial con Html.Partial. Esto te mantiene con la vista principal desde la hinchazón.

En general, trato de evitar Html.Helpers que contienen más de un elemento.

Algo así como:

@if(Model.HasA) 
{ 
    @Html.Partial("widgetdetails-hasa") 
} 

@if(Model.HasB) 
{ 
    @Html.Partial("widgetdetails-hasb") 
} 
// etc 
+0

Acepto - Html Helpers con más de un elemento se denominan Páginas parciales ;-) – richb01

4

lógica en mi humilde opinión como esto está muy bien para una vista:

@if (Model.ShouldShowSomeSection) 
{ 
    ... some large chunk of HTML 
} 
else 
{ 
    ... some alternative 
}