网站导航网学 原创论文 原创专题 网站设计 最新系统 原创论文 论文降重 发表论文 论文发表 UI设计定制 论文答辩PPT格式排版 期刊发表 论文专题
返回网学首页
网学原创论文
最新论文 推荐专题 热门论文 论文专题
当前位置: 网学 > 设计资源 > .Net编程 > 正文

ASP.NETMVC实战演练

论文降重修改服务、格式排版等 获取论文 论文降重及排版 论文发表 相关服务

关于MVC,已经有了很多的讨论。这一篇我用一个简单的实例演示了如何使用它,以及几个常见问题的解答。我推荐大家要了解一下MVC,尽可能地话,提前尝试用他做一些项目,这样理解会更加深刻

1. 添加一个Controller。在Controllers目录,点右键,有专门一个菜单项

image

注意:这里的命名规范是后缀为Controller

默认生成的代码如下

  1. using System; 
  2. using System.Collections.Generic; 
  3. using System.Linq; 
  4. using System.Web; 
  5. using System.Web.Mvc; 
  6. using System.Web.Mvc.Ajax; 
  7.  
  8. namespace MvcApplication1.Controllers 
  9.     public class CustomerController : Controller 
  10.     { 
  11.         // 
  12.         // GET: /Customer/ 
  13.  
  14.         public ActionResult Index() 
  15.         { 
  16.             return View(); 
  17.         } 
  18.  
  19.         // 
  20.         // GET: /Customer/Details/5 
  21.  
  22.         public ActionResult Details(int id) 
  23.         { 
  24.             return View(); 
  25.         } 
  26.  
  27.         // 
  28.         // GET: /Customer/Create 
  29.  
  30.         public ActionResult Create() 
  31.         { 
  32.             return View(); 
  33.         }  
  34.  
  35.         // 
  36.         // POST: /Customer/Create 
  37.  
  38.         [AcceptVerbs(HttpVerbs.Post)] 
  39.         public ActionResult Create(FormCollection collection) 
  40.         { 
  41.             try 
  42.             { 
  43.                 // TODO: Add insert logic here 
  44.  
  45.                 return RedirectToAction("Index"); 
  46.             } 
  47.             catch 
  48.             { 
  49.                 return View(); 
  50.             } 
  51.         } 
  52.  
  53.         // 
  54.         // GET: /Customer/Edit/5 
  55.   
  56.         public ActionResult Edit(int id) 
  57.         { 
  58.             return View(); 
  59.         } 
  60.  
  61.         // 
  62.         // POST: /Customer/Edit/5 
  63.  
  64.         [AcceptVerbs(HttpVerbs.Post)] 
  65.         public ActionResult Edit(int id, FormCollection collection) 
  66.         { 
  67.             try 
  68.             { 
  69.                 // TODO: Add update logic here 
  70.   
  71.                 return RedirectToAction("Index"); 
  72.             } 
  73.             catch 
  74.             { 
  75.                 return View(); 
  76.             } 
  77.         } 
  78.     } 

2. 添加一个数据模型

image

image

3. 添加视图
首先准备一个文件夹:Customer

image

选择该文件夹,在右键菜单中选择"添加"=>"View"

image

点击“Add”之后,可以看到如下代码

  1. <%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<IEnumerable<MvcApplication1.Models.Customers>>" %> 
  2.  
  3. <asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server"> 
  4.     Index 
  5. </asp:Content> 
  6.  
  7. <asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"> 
  8.  
  9.     <h2>Index</h2> 
  10.  
  11.     <table> 
  12.         <tr> 
  13.             <th></th> 
  14.             <th> 
  15.                 CustomerID 
  16.             </th> 
  17.             <th> 
  18.                 CompanyName 
  19.             </th> 
  20.             <th> 
  21.                 ContactName 
  22.             </th> 
  23.             <th> 
  24.                 ContactTitle 
  25.             </th> 
  26.             <th> 
  27.                 Address 
  28.             </th> 
  29.             <th> 
  30.                 City 
  31.             </th> 
  32.             <th> 
  33.                 Region 
  34.             </th> 
  35.             <th> 
  36.                 PostalCode 
  37.             </th> 
  38.             <th> 
  39.                 Country 
  40.             </th> 
  41.             <th> 
  42.                 Phone 
  43.             </th> 
  44.             <th> 
  45.                 Fax 
  46.             </th> 
  47.         </tr> 
  48.  
  49.     <% foreach (var item in Model) { %> 
  50.      
  51.         <tr> 
  52.             <td> 
  53.                 <%= Html.ActionLink("Edit", "Edit", new { id=item.CustomerID }) %> | 
  54.                 <%= Html.ActionLink("Details", "Details", new { id=item.CustomerID })%> 
  55.             </td> 
  56.             <td> 
  57.                 <%= Html.Encode(item.CustomerID) %> 
  58.             </td> 
  59.             <td> 
  60.                 <%= Html.Encode(item.CompanyName) %> 
  61.             </td> 
  62.             <td> 
  63.                 <%= Html.Encode(item.ContactName) %> 
  64.             </td> 
  65.             <td> 
  66.                 <%= Html.Encode(item.ContactTitle) %> 
  67.             </td> 
  68.             <td> 
  69.                 <%= Html.Encode(item.Address) %> 
  70.             </td> 
  71.             <td> 
  72.                 <%= Html.Encode(item.City) %> 
  73.             </td> 
  74.             <td> 
  75.                 <%= Html.Encode(item.Region) %> 
  76.             </td> 
  77.             <td> 
  78.                 <%= Html.Encode(item.PostalCode) %> 
  79.             </td> 
  80.             <td> 
  81.                 <%= Html.Encode(item.Country) %> 
  82.             </td> 
  83.             <td> 
  84.                 <%= Html.Encode(item.Phone) %> 
  85.             </td> 
  86.             <td> 
  87.                 <%= Html.Encode(item.Fax) %> 
  88.             </td> 
  89.         </tr> 
  90.      
  91.     <% } %> 
  92.  
  93.     </table> 
  94.  
  95.     <p> 
  96.         <%= Html.ActionLink("Create New", "Create") %> 
  97.     </p> 
  98.  
  99. </asp:Content> 

注意:这个页面是没有aspx.cs文件的。这也是MVC模式极力避免的。因为如果页面如果有代码,就自然包含了逻辑,那么就不是MVC了。在MVC里面,视图(View)顾名思义,只是显示内容的一个载体,它自己要不要显示,要显示什么内容,全部由控制器(Controller)决定

4. 让视图具有实际意义。假使我们希望在Index页面中显示那些订购金额在前十名的客户名称。
我们首先需要修改一下Index这个Action

  1. public ActionResult Index() 
  2.         { 
  3.             Models.NorthwindDataContext context = new MvcApplication1.Models.NorthwindDataContext(); 
  4.  
  5.             var query = from c in context.Customers 
  6.                         let total = c.Orders.Sum( 
  7.                             o => o.Order_Details.Sum( 
  8.                                 d => d.Quantity * d.UnitPrice)) 
  9.                         orderby total descending 
  10.                         select c; 
  11.  
  12.             return View(query.Take(10).ToArray()); 
  13.  
  14.         } 

5. 运行页面看看效果如何

image

小结:
上面这个简单的例子,演示了如何使用MVC这套新的开发框架。它与传统的WebForms有两点明显不一样
1. 不再基于PostBack的机制。页面不再是首先被用户接触到的东西,而且页面相对来说显得不是那么重要了(至少页面名称用户基本不用关心了)。
2. 没有了ViewState。其原因是因为现在的页面中不再使用服务器控件了。这是不是一大损失呢?初看是的,但细想一下不是。这样做的网络开发才更加标准。

常见问题解答
有哪几种Action(下面列出的10个Action)
ContentResult(Content):返回标准文本
FileContentResult(File):返回文件
FileStreamResult(File):返回文件流
FilePathResult(File):返回文件流
FileResult(File):返回文件
JavascriptResult(JavaScript):返回javascript并在客户端执行
JsonResult(Json):返回json
PartialViewResult(PartialView):返回一个局部视图
RedirectToRouteResult(RedirectToAction):跳转
ViewResult(View):展示一个视图(这是用得最多的)
跳转页面或者执行其它的Action
其实就是跳转Action,如果在页面中的话,通过链接来实现 Html.ActionLink来实现,如果在服务端的话,就用RedirectToAction方法
如何post
这是需要在Action上面添加一个Attribute
[AcceptVerbs(HttpVerbs.Post)]
并且方法要有一个参数:FormCollection(这代表了表单中的域)
如何get
这是标准的Action,无需任何设置,默认情况就是GET

如何使用用户控件(UserControl)
在页面中的话,用Html.RendPartialView方法。在Controller中的话,用PartialView方法

  • 上一篇资讯: MVC技巧总结
  • 设为首页 | 加入收藏 | 网学首页 | 原创论文 | 计算机原创
    版权所有 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2020 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号 常年法律顾问:王律师