2010-11-01 8 views
6

Estoy tratando de ingresar a MVC y actualmente estoy leyendo el libro wrox professional ASP.NET MVC.¿Podría alguien explicarme ASP.NET MVC?

De alguna manera lo tengo hasta ahora. En lugar de que cada URL vaya a una página, va a un controlador. La acción del controlador obtiene los datos y decide qué vista usar.

También entiendo que si tengo una URL como/product.aspx? Id = 100, entonces el controlador obtendría los detalles del producto y los combinaría con la vista "mostrar producto".

Ahora aquí está la parte que no entiendo ...

Si mi página de producto tiene otras cosas en él, como un cuadro de inicio de sesión, una sección "10 productos arriba", lista de categorías, etc., que pueden o no ser utilizado en otras páginas también, ¿cómo las incluiría y mantendría su código separado?

En el clásico modelo aspx sería simple. Si aparecieran mis mejores 10 productos en cada página, lo pondría en una página maestra, pero lo más probable es que lo convertiría en un control de usuario si fuera a ser utilizado en algunas páginas y no en otras.

Por lo que entiendo de MVC hasta ahora, mi controlador de productos tendría que obtener los 10 mejores productos y también lo haría cualquier otro controlador que estuviera produciendo una página con los 10 productos más importantes.

Confundido. Por favor ayuda.

+1

"si tengo una URL como/product.aspx? Id = 100" - no es así. :) – bzlm

+1

Pausa la lectura y comienza la codificación, entonces entiendes ... :) – Aristos

+0

bzlm, buen punto. productos/100 – jonhobbs

Respuesta

4

Por lo que entiendo de MVC hasta ahora, mi controlador de productos tendría que conseguir los 10 mejores productos y así sería cualquier otro controlador que fue producir una página con los 10 los mejores productos en el mismo.

No necesariamente. Puede usar páginas maestras con MVC, así como también Parciales para dividir en compartimientos el contenido de vista reutilizable.

Este es un buen artículo sobre el uso de Parciales. http://jeffreypalermo.com/blog/asp-net-mvc-and-the-templated-partial-view-death-to-ascx/

Además, en su 10 productos Top ejemplo, usted podría tener que prestados por una acción infantil:

[ChildActionOnly] 
public ActionResult GetTopTenProducts() 
{ 
    var products = db.GetTopProducts(10); 
    return View(products); 
} 

A continuación, tendría una vista parcial (.ascx) llamado "GetTopProducts.ascx" que se mostraría cuando llame a la acción GetTopTenProducts(). Luego, en su página principal, o en cualquier lugar que quería que la lista de los 10 en aparecer, que podríamos llamar de esta manera:

<% Html.RenderAction("GetTopTenProducts") %> 
+0

Excelente ejemplo. Gracias. – jonhobbs

+0

Tuve la misma pregunta cuando comencé a aprender MVC :) – dotariel

+0

+1 - ninguna entrega nonesense :) –

2

Estás cerca.

Simplemente está olvidando que su controlador es una clase que puede heredar de una clase base.

Puede crear una clase de controlador base que maneje la recuperación de los diez mejores productos, y luego tener cualquier controlador que necesite esa funcionalidad heredará de la clase base.

A continuación, crea una página maestra que utiliza una vista parcial para mostrar los diez mejores productos pasados ​​a la vista (desde el controlador base).

... y listo! Sin repetición de código

1

No olvide que en ASP.NET MVC aún puede utilizar MasterPage. Con ASP.NET MVC 2 específico, puede visualizar esos 10 productos usando RenderAction, que puede representar la Acción desde cualquier Controlador que seleccione.

Además de eso, también debe conocer PartialView.

+0

Gracias, parece que Renderaction y PartialView son lo que estaba buscando. Tendré que hacer más lectura. – jonhobbs

1

Puede usar páginas maestras y en MVC las vistas parciales son sinónimo de controles de usuario. La diferencia al ser página maestra no tiene un controlador correspondiente. Usted una solución con una de dos maneras.

  1. Cuando se utiliza una vista parcial puede pasar a un modelo en.

    <%= Html.RenderPartial("PartialView",Model) %> 
    
  2. Usted sólo puede hacer el trabajo en la vista parcial, utilizando los soportes de código <% %>.
Cuestiones relacionadas