En ASP clásico, solía tener negocio código en su archivo ("Obtener material de la base de datos y actuar en consecuencia").
En ASP.net MVC, independientemente de si utiliza ASPX o Razor View Engine, se trata de View Logic. Cosas como "Tengo 20 empleados, muéstralos en una tabla" o "Si este número es negativo, muéstralo en rojo en lugar de negro".
La lógica de negocio está en los controladores y más bajo. Luego, el controlador pasa los datos comerciales a la vista a través de un modelo de vista. La Vista solo tiene código que lo muestra, lo que generalmente es trivial pero puede tener algunas ramas lógicas propias ("Mostrar fechas en la configuración regional de usuarios" o "Mostrar empleados masculinos y femeninos en tablas separadas")
Usted puede cometer el error de poner la lógica comercial aquí. Digamos, los empleados contratados antes de 2008 son elegibles para un Certificado de Lealtad. Entonces, su tabla tiene una columna "Certificado de impresión" que solo se muestra para estos. El enfoque simple, pero mal es poner una sentencia if-:
@if(employee.HireYear <= 2008) {
Html.ActionLink("Print Certificate","Certificate","Cheese",
new { id = employee.Id }, null);
}
Esto funciona, pero es erróneo porque ahora la vista contiene la lógica de negocio. El enfoque correcto es agregar un nuevo campo bool al ViewModel. Dado que contiene un IList<Employee>
en este ejemplo, significa crear otra clase EmployeeWithCertificateEligibility
, o mejor, tener listas separadas para los empleados elegibles y no elegibles. Sin embargo, es algo común tener un derrame de lógica de negocios en la vista, a veces en forma de un método de extensión HtmlHelper.
Editar: Lo comparas con la "implementación clásica inicial de asp". Eso puede significar tres cosas: Classic ASP, ASP.net WebForms o ASP.net MVC con el motor de visualización WebForms/ASPX. Mi ejemplo se refiere a los dos primeros casos. Si ya conoces todo el material de MVC y te preguntas sobre las diferencias entre Webforms y Razor View Engine: Conceptualmente son lo mismo, Razor es mucho menos detallado y más limpio.
Posible duplicado de este hilo http://stackoverflow.com/questions/558002/asp-net-mvc-classic-asp-with-net-class-library-really – Chandermani
@Chandermani - Eso es sobre ASP.Net MVC no Maquinilla de afeitar. – klabranche
@klabranche el motor de vista no importa, la preocupación aquí es entremezclar la interfaz de usuario y el código del lado del servidor. – Chandermani