lunes, 29 de octubre de 2012
Dynamic v. Strongly Typed Views MVC
Hay tres formas de pasar información de un controlador a una vista en ASP.NET MVC 3:1.) Strongly typed model object.
2.) Dynamic type (using @model dynamic)
3.) Using the ViewBag
Vamos a crear y llenar una simple lista blogs para nuestro ejemplo.
Primer paso vamos agregar el siguiente código el controller home.
using System.Collections.Generic; using System.Web.Mvc; namespace Mvc3ViewDemo.Controllers { public class Blog { public string Name; public string URL; } public class HomeController : Controller { List<Blog> topBlogs = new List<Blog> { new Blog { Name = "ScottGu", URL = "http://weblogs.asp.net/scottgu/"}, new Blog { Name = "Scott Hanselman", URL = "http://www.hanselman.com/blog/"}, new Blog { Name = "Jon Galloway", URL = "http://www.asp.net/mvc"} }; public ActionResult IndexNotStonglyTyped() { return View(topBlogs); } public ActionResult About() { ViewBag.Message = "Welcome to ASP.NET MVC!"; return View(); } } }
Vamos añadir un View Razor con el nombre IndexNotStonglyTyped() , para eso presionamos clic derecho sobre el metodo y luego add view.
Abrimos la vista IndexNotStonglyTyped y agregamos el siguiente Ejemplo:
@model dynamic @{ ViewBag.Title = "IndexNotStonglyTyped"; } <h2>IndexNotStonglyTyped</h2> <p> <ul> @foreach (var blog in Model) { <li> <a href="@blog.URL">@blog.Name</a> </li> } </ul> </p>
El resultado sera:
Ahora realizaremos el ejemplo de strongly typed.
Vamos agregar el siguiente otro metodo al controller home.
public ActionResult StonglyTypedIndex() { return View(topBlogs); }
Vamos añadir un View Razor con el nombre StonglyTypedIndex() , para eso presionamos clic derecho sobre el metodo y luego add view.
Abrimos la vista StonglyTypedIndex y agregamos el siguiente Ejemplo:
@model IEnumerable<Mvc3ViewDemo.Controllers.Blog>
@{
ViewBag.Title = "StonglyTypedIndex";
}
<h2>StonglyTypedIndex</h2>
<p>
@Html.ActionLink("Create New", "Create")
</p>
<table>
<tr>
<th></th>
</tr>
@foreach (var item in Model) {
<tr>
<td>
<a href="@item.URL">@item.Name</a>
</td>
</tr>
}
</table>
El resultado sera:
Suscribirse a:
Comentarios de la entrada (Atom)
No hay comentarios.:
Publicar un comentario