【代码4】:Index.aspx
下面来实现Customer Controller的Edit方法。在CustomerController.cs中添加如下代码:
|
public void Edit(string id) { Northwind.Models.NorthwindDataContext dc = new Northwind.Models.NorthwindDataContext(); Customer c = dc.Customers.Single(cus => cus.CustomerID == id);//从数据库中取出参数id所对应的的一个Customer记录 RenderView("Edit", c);//返回Edit View |
相应的在项目中的View/Customer/文件夹下,添加Edit View Edit.aspx:
|
public partial class Edit : ViewPage<Northwind.Models.Customer> { } |
|
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Edit.aspx.cs" Inherits="Northwind.Views.Customer.Edit" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title></title> </head> <body> <!—下面的 html form 将用户的输入提交到Customer Contoller的Update方法 --> <%using( Html.Form<Northwind.Controllers.CustomerController>(cc=>cc.Update(ViewData.CustomerID))){ %> <div> Customer ID: <%= ViewData.CustomerID %> <br /> Company Nmae: <%= Html.TextBox("Customer.CompanyName", ViewData.CompanyName) %> <br /> Contact Name: <%= Html.TextBox("Customer.ContactName",ViewData.ContactName) %><br /> Contact Title: <%= Html.TextBox("Customer.ContactTitle",ViewData.ContactTitle) %> </div> <%= Html.SubmitButton("Save") %> <%} %> </body> </html> |
代码7中使用了MVC框架中的一个帮助类Html。此类可以生产View中常用的界面元素,例如 html form,文本输入框等。
下面来实现CustomerController的Update方法:
|
public void Update(string id) { Northwind.Models.NorthwindDataContext dc = new NorthwindDataContext(); //从数据库中取出参数id所对应的的一个Customer记录: Customer cust = dc.Customers.Single(c => c.CustomerID == id); //将Edit View中的用户的更改赋值到cust对象: BindingHelperExtensions.UpdateFrom(cust, Request.Form); dc.SubmitChanges(); RedirectToAction("Index");//跳转到Index View } |
【代码8】:CustomerController.cs中的Update方法
上面的代码通过ASP.NET MVC框架实现了Customer的列表、编辑及更新功能,可以看出MVC将应用程序的Model、View及Controller三部分"优雅的"分离,真正实现了高内聚、低耦合的灵活架构,大大降低了程序的复杂性,提高了可扩展性及可重用性。这一框架对Web开发带来的影响不仅是是技术上的变化,更是Web程序设计思想的变化 -- Web程序不再是一些列功能页面的集合,而是又Controller控制的功能单元的集合,Web程序更像是一组通过其URL对外开放的"API"。

