ASP.NET MVC______VS2012

1,在VS2010中,选中指定的代码段,可以拖拽到工具箱中,形成标签,以后还想书写类似的代码,双击鼠标即可。

2,在VS2012中,可以在注释上标注//TODO:我是注释

这样,注释就会出现在任务列表中,一些关键常用的方法/字段/关注点,通过这种方式快速定位。如图:

3,在VS2012中是不支持MVC1.0和MVC2.0的,如果要开启低版本MVC项目的话,必须使用VS2010

4,_ViewStart.cshtml文档会在所有其他所有视图(VIEW)运行之前载入。

发现使用布局页的视图没有完整的HTML结构,是因为类似的视图都作为一部分被装载到布局页中,由_ViewStart.cshtml文档指定,默认为_Layout.cshtml。

5,可以在视图页面的头部定义ViewBag的临时变量,而不必是在Controller的Action方法中定义,如图:

6,在浏览网页时,如果只是指定Controller,而不指定Action,而控制器和动作方法均是必须的路由参数,这时将去RegisterRoutes()方法中取默认的Action值,如图:

上图中默认的方法为Index,也就是说当我们输入.../example的时候,会自动路由为.../example/index

7,如果在View中定义了@model模型声明,那么通过Controller传进View的模型类型必须与View中所声明的类型兼容,否则将产生异常,如图:

8,在view文档(也就是cshtml中),<head>标签中的<title>标签指标题,如图:

9,如下代码:

<p>
@Html.ActionLink("Create New", "Create")
</p>

创建链接,因为没有指定链接的控制器名称,所以链接到当前控制器的Create动作方法,显示的文本为“Create New"。

10,HTTP GET POST

HTTP GET负责显示编辑的窗体,HTTP POST负责实际更新数据库里的属性。

11,杂:

@Html.HiddenFor(model => model.ID)   生成HTML窗体的隐藏域

HTML注释符号:<!--我是被注释的内容-->

在ASP.NET MVC中不建议使用Request对象和Response对象

不要在视图中撰写过多的程序逻辑,实现“关注点分离”

网址路由在MVC中的作用:

1、比对浏览器传过来的HTTP请求,对应到适当的控制器和Action进行处理;

2、决定MVC输出什么样的响应给浏览器;

12,网址路由

比如:单击“主页”链接,浏览器将URL封包,并发送HTTP要求到服务器上,IIS接收到这个HTTP封包,转给网址路由模块负责将HTTP请求交由那个HTTPHandler处理,对于MVC来说,自然是转交给MVCHandler处理,这才会进入MVC的运行声明周期。

  所有ASP.NET Web程序的入口点均是Application_Start()事件,其中 RouteConfig.RegisterRoutes(RouteTable.Routes);

  代码中的Routes是一个公开的静态变量,用来保存所有网址路由的规则集合,为RouteCollection类型的变量。

  routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

    代码中,表示不要通过网址路由处理,即如果从浏览器传递过来的网址,匹配该规则,将由IIS的其他Http模块处理,将不会进入ASP.MET MVC的生命周期。

  url: "{controller}/{action}/{id}"

  代码中URL样式包含三个路由参数,分别是Controller/Action/ID,注意该URL样式不能以‘/'开头。

  defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }

  默认值。当对比不到HTTP请求的网址时,会尝试带入代码中的默认值。

  当接收到HTTP请求时,将从上而下逐条比对,直到找到符合的网址格式。

  注意ID不算在网址路由之中,属于QueryString的部分。

1                 routes.MapRoute(
2                 name: "Default",
3                 url: "{controller}/{action}/{id}",
4                 defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
5             );        

  上述代码中,MapRoute使用的是具名参数。

13,MVC的运行声明周期

     网址路由比对-->运行Controller与Action-->运行View并回传结果

14,MVC在比对网址路由时,默认情况下,如果查找到网站实体目录中查找相应的实体文档,会自动略过所有网址路由比对。

   如果想打破这种默认行为,那么在MVC程序的入口Application_Start()中,添加如下代码:

  RouteTable.Routes.RouteExistingFiles = true;

  当网址路由比对成功时,MVC默认交由MvcHandler处理。

原文地址:https://www.cnblogs.com/SharpL/p/4587010.html