2010-01-11 25 views

Respuesta

2

No estoy seguro de si esto es lo que vio, pero here es un blog que lo menciona. Ver artículo # 11.

+0

Sí, ese es el que recuerdo! Los enlaces en las otras respuestas también son buenos, ¡así que gracias! – JoelFan

0

Creo que está bien. Permite que la vista tenga control de su presentación.

0

Sospecho que el punto era un intento de evitar el código de spaghetti en lugar de restringir el uso de "si", aquí hay un enlace a un blog de Rob Conery, menciona el uso de ayudantes en lugar de Ifs, así que puede ser lo que vio ASP.NET MVC: Avoiding Tag Soup

9

Creo que lo que usted se refiere es un post by Rob Conery, donde menciona una regla que utiliza:

Si hay una if, haré ayuda

Así que para responder a su pregunta, la idea es que si necesita usar if en su Vista, debería considerar agregar un método de extensión auxiliar para representar esa parte de su Vista.

0

¿Es este el problema al que se refiere?

expresiones de enlace no se pueden utilizar en bloque de instrucciones <%%>, al igual que declaraciones no se pueden utilizar en una unión bloque de expresión <% #%>

- Bruce (sqlwork.com)

"Jason" <> escribió en el mensaje noticia: 23C11F83-A2AA-406D-BDEC -...

Qué hay de malo con la siguiente sentencia if en mi página aspx?

"T" Entonces%>

Aparece el error que dice: BC30201: Expresión esperada.

Bruce Barker

10

Básicamente lo que significa es que usted no debe tener enormes si las declaraciones en sus vistas, sus controladores y ViewModels deben ser capaces de manejar la lógica. Ejemplo:

<h2 class="title"> 
    <% if (ViewData["category"] == null { %> 
     All Products 
    <% } else { % > 
     <%= ViewData["category"] %> 
    <% } %> 
</h2> 

debe ser:

<h2 class="title> 
    <%= Model.Title %> 
</h2> 

Si sus controladores y ViewModels no pueden manejar la lógica, se deben escribir en HTML ayudantes para la lógica más complicado (por lo que es reutilizable y más legible).

<h2 class="title> 
    <%= Html.GetPageTitle(Model.Category) %> 
</h2> 
2

como creo que el mejor enfoque para esto es tratar de manejar su condición en caso de controlador y pasar el punto de vista específico para el resultado requerido o pasar el nombre de Vista en una variable para rendir.

public class HomeController :Controller 
{ 
    public ActionResult Category(string? category) 
    { 
     View viewToReturn; 
     if (category == null) 
      viewToReturn = View("CategoryList", repo.GetAllCategory); /// it is a View 
     else 
      viewToReturn = View("Category", repo.GetCategory(category)); /// it is a View 

     return viewToReturn; 
    } 
} 

Bueno, Martin respuesta es también de las mejores prácticas.