Visual Studio 11 4/19/2013 ASP.NET WebForms 4.5 Luis Alfonso Rey, Servicios Profesionales l.alfonso@danysoft.com | www.danysoft.com Novedades a vista de pájaro Webforms algo rezagada de MVC – rumores Webforms tiene su uso y MVC el suyo Novedades principales Model Binding Validaciones Web API 1 Visual Studio 11 4/19/2013 Model Binding Los controles de isla de datos pueden enlazar con métodos de la página public IQueryable<Category> GetCategories() { var northwind = new Northwind(); return northwind.Categories.Include(c => c.Products); }<asp:GridView ID="categoriesGrid" runat="server" ModelType="WebApplication1.Model.Catego SelectMethod="GetCategories" AutoGenerateColumns="false"> <Columns> <asp:BoundField DataField="CategoryID" HeaderText="ID" /> <asp:BoundField DataField="CategoryName" HeaderText="Name" /> <asp:BoundField DataField="Description" HeaderText="Description" /> <asp:TemplateField HeaderText="# of Products"> <ItemTemplate><%# Item.Products.Count %></ItemTemplate> </asp:TemplateField> </Columns> </asp:GridView> Value Providers Los métodos pueden ser filtrados Enlace automático con controles y querystring Atributos [QueryString] y [Control] 2 Visual Studio 11 4/19/2013 Actualizaciones del modelo Se puede actualizar mediante el UpdateMethod Dos aproximaciones cambiar el estado del elemento o TryUpdateModel public void UpdateProduct(int productId) { var product = _db.Products.Find(productId); TryUpdateModel(product); if (ModelState.IsValid) { _db.SaveChanges(); } public void UpdateProduct(Product product) { _db.Entry(product).State = System.Data.EntityState.Modified; _db.SaveChanges(); } } Validaciones Validaciones por atributos en la entidada, ej: – [Required] – [StringLength(40)] – [DataType(DataType.Currency)] Mostrar los errores de validación en un Summary y el parámetro ShowModelStateErrors 3 Visual Studio 11 4/19/2013 Model Binding ASP.NET Web API Abraza el HTTP – Negociación de contenido – Enrutado basado en verbos (ASP NET Routing) (ASP.NET – Construye servicios “restful” Soporta cualquier cliente – Dispositivos móviles – Lenguajes de script Modelo de programación de primera clase – Soportado simétrica en el cliente – (via el nuevo HttpClient) y servidor 4 Visual Studio 11 4/19/2013 Como usar Web API Añadir un controlador con acciones Configurar el routing en Application_Start Application Start Invocar desde cliente con Ajax (JQuery) Controlador public class ProductsController : ApiController { public IEnumerable<Product> GetAllProducts() { } public Product GetProductById(int id) { } public IEnumerable<Product> GetProductsByCategory(string category) { } } 5 Visual Studio 11 4/19/2013 Routing using System.Web.Http; RouteTable.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: t T l t "api/{controller}/{id}", " i/{ t ll }/{id}" defaults: new { id = System.Web.Http.RouteParameter.Optional } ); Petición Ajax function getProducts() { $.getJSON("api/products", function (data) { $.each(data, function (key, val) { //val es cada dato devuelto }); }); } $(document).ready(getProducts); 6 Visual Studio 11 4/19/2013 Web API 7 Visual Studio 11 4/19/2013 www w.danysoft.ccom http://www.danysoft.com/visualstudio 8