zoukankan      html  css  js  c++  java
  • ASP.NET MVC2(Visual Studio.NET 2010)学习之路(二)

    先讲一下 在 ASP.NET MVC2 中,目录结构的规范。(任何使用MVC模式进行快速开发的框架,肯定都会提供一套默认的规范,和自定义的接口,包括Java中用的)

    在默认情况下,View层,是放在~/Views/A/下的,如~/Views/Home/Index.aspx。在页面使用的类,可以使用强类型,指定一个Model,如System.Web.Mvc.ViewPage<dynamic>。MVC框架中,通过使用路由的URL重定向,使Controller获得从View发出的Http请求,进行处理。在默认的路由规则 {controller}/{action}/{id} 中,请求的一级路径,即为Controller的名字,如Home,就是对应的HomeController类;请求的二级路径,即为对应的View页面,如Index.aspx。请求的三级路径,是指默认的url参数id。如请求地址为~/Home/Index/1,那么相当于请求~/Views/Home/Index.aspx?id=1,是不是看起来很简洁啊?

    在默认的路由情况下,Controller是不区分名字空间的,即使名字空间不一样但Controller一样,这是不允许的。解决的办法,是修改默认的路由,指定要找的名字空间。像上篇提到的,如果系统比较复杂,对目录结构要求很严格的情况下,我们可以引入Area。每个Area都能单独定义自己的MVC的路由,因为限定了找Controller的默认名字空间,所以不会出现Area之间的Controller名字歧义的问题,当然路由规则还是可以自定义的。

    每个View页面,都要求有对应的Controller类和一个Action的方法,可以只含HttpPost或HttpGet。对于同一个Action方法,如果Http请求的方式也相同,那么,即使这2个方法的参数不一样,也是不允许的,这也会引起歧义。譬如:

    public ActionResult Create()
    
    [HttpPost]
    public ActionResult Create(FoodCategory model)

    这2个写法是允许的,但以下2个是不被允许的。

    public ActionResult Create()
    
    public ActionResult Create(FoodCategory model)

    这将被看成Action都是Create的,都是HttpGet的请求方式,这将引起歧义,框架不知道要调用哪个了。看一下HTML表单Form,大概就能理解了。<form action=”index.aspx” method=”post”>,不一样的action,会请求不一样的服务端处理。

    大致讲了一下MVC的目录结构,以及URL重定向是通过路由来工作的,那么在之后的篇章中,将进入实战演练了。

  • 相关阅读:
    Construct Binary Tree from Preorder and Inorder Traversal
    Construct Binary Tree from Inorder and Postorder Traversal
    Maximum Depth of Binary Tree
    Sharepoint 2013 创建TimeJob 自动发送邮件
    IE8 不能够在Sharepoint平台上在线打开Office文档解决方案
    TFS安装与管理
    局域网通过IP查看对方计算机名,通过计算机名查看对方IP以及查看在线所有电脑IP
    JS 隐藏Sharepoint中List Item View页面的某一个字段
    SharePoint Calculated Column Formulas & Functions
    JS 两个一组数组转二维数组
  • 原文地址:https://www.cnblogs.com/Berkaroad/p/1774914.html
Copyright © 2011-2022 走看看