本章向大家分享一下MVC5开发的知识



ASP.NET MVC版本

2009-03-17          

Asp.NET MVC 1.0       

已发布

2009-07-31

Asp.NET MVC 2.0

已发布

2010-10-06

Asp.NET MVC 3.0

已发布

2011-09-20

Asp.NET MVC 4.0

已发布

2013-01-17

Asp.NET MVC 5.0

已发布




由于从3.0以后就引入了Razor试图引擎,所以,现在新开发的项目,建议使用MVC4或者MVC5,ASP.NET MVC已经发展到了很完美的框架了!


特性:

1.Razor试图引擎

   一个@符号嵌入HTML中,自动识别是C#代码,还是HTML标签,并且已经去掉了<%%>的开发了,本人很喜欢这点

   如:一个table表需要签入到HTML中循环出来

@foreach(System.Data.DataRow dr in dt.Rows)
{
<tr>
<td>@dr["UserName"]</td>
<td>@dr["Age"]</td>
<td>@dr["Address"]</td>
</tr>
}



2.创建表单

    以前是:

<span style="font-size:14px;"><span style="white-space: pre;">  </span><form id="form1" method="post" action="abc.aspx"> </form></span>

   现在是:

@using (Html.BeginForm("addmodule", "Email", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
<tr>
<th></th>
</tr>
}


3.访问路径

   以前是abc.aspx动态页面,会在页面创建很多ViewState码,访问一个页面abc.aspx页面是:  


<span style="font-size:14px;"><span style="white-space: pre;">  </span><a href="abc.aspx?id=12"></a></span>



   现在是静态页面,动态内容,不会创建任何ViewState码,访问一个页面是:

<span style="font-size:14px;">        <a href="@Url.Action("abc","home")"></a></span>
<span style="font-size:14px;">
</span>

4.input,checkbox,radio

   以前是不描述了

   现在是:

<span style="font-size:14px;">   @Html.TextBox("txt_UserName")
@Html.CheckBox("txt_read")
@Html.RadioButton("rb_sex")</span>
<span style="font-size:18px;">  还有很多去开发时VS提示,一般就明白的</span>
<span style="font-size:18px;">
</span>
<span style="font-size:18px;">5.强类型视图</span>
<span style="font-size:18px;">  个人不太喜欢强类型视图,完全把我们的数据库字段都暴漏了,想看细节请百度查询“MVC强类型视图”</span>
<span style="font-size:18px;">
</span>

6.从C#后端传数据到View视图

ViewData["memberData"] = new DataTable();
ViewBag["Message"] = "哈哈";
TempData["List"] = "嘿嘿"

     以上这三种都可以想客户端传动态数据,动态解析,类型是Object,任意数据都可以


7.Action种类

   ActionResult      :最常见的,返回一个View

   ContentResult     :使用Content(string content)返回一个原始字符串

   RedirectResult    :使用Redirect(string url)将结果转到其它的Action 


   JsonResult        :返回一个Json对象,一般配合ajax使用


8.路由规则

   默认是:

<span style="font-size:14px;">  routes.MapRoute(
"Default", // 路由名称
"{controller}/{action}/{id}", // 带有参数的 URL
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // 参数默认值
);</span>

  我们也可以配置多个路由,但是路由名称不能相同

  

<span style="font-size:14px;">   routes.MapRoute(
"NewsShow",<span style="white-space: pre;"> </span>//路由名称
"News/{year}-{month}-{day}-{id}",//访问url</span>
<span style="font-size:14px;">                new {controller = "News", action = "Show"},//默认访问是  /News/Show</span>
<span style="font-size:14px;">                new {year=@"^\d{4}$",month=@"^\d{1,2}$"}   //路由规则设置约束
);
</span>


9.过滤器

   四种过滤器

   1.身份验证过滤器

      必须继承IAuthorization,实现它的方法并重写是OnAuthorization()

   2.action行为过滤器

      必须继承IActionFilter,实现它的方法并重写 是OnActionExecuting()执行前,OnActionExecuted()执行后

   3.异常过滤器

      必须继承IExceptionFilter,实现并且重写的是OnException()方法,当应用程序出错时,就会执行这个类

   4.结果过滤器

      必须继承IResultFilter,实现并重写的是OnResultExecuting()执行前,OnResultExecuted()执行后

   当我们项目中使用了自定义过滤器类,那么必须在注册上,在app_start文件夹中

<span style="font-size:14px;">    public class FilterConfig
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
}
}</span>

   这里展示的是,我自定义的一个异常类,叫HandleErrorAttriute()

  

   在app_start文件夹中的四个文件

   BundleConfig.cs    用于注册所使用的捆绑和微小的系统。几乎被添加默认情况下,包括jQuery和jQuery验证,jQueryUI,Modernizr,默认的CSS引用。

   FilterConfig.cs        过滤器注册类

   RouteConfig.cs      持有的原始MVC的配置语句,配置路由。

   WebApiConfig.cs   用于注册Web API的路线,以及任何其他WebAPI的配置设置

   都会被注册到Global.cs文件中

<span style="font-size:14px;">            WebApiConfig.Register(GlobalConfiguration.Configuration);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);</span>


10.特性

   我们可以在方法或者Action的上面添加特性

<span style="font-size:14px;">   [HttpPost]       //表示只允许post请求来操作它
[HttpGet] //表示只允许get请求来操作它
[Required] //配合jquery校验时使用</span>




   还有很多自己需要细心者探索去了


  到这里我们MVC基本都会了,但是还有一些ajax,微软给我们封装好了,还有校验js,Jquery,有兴趣可以自己研究去。

  

  这样我们写MVC项目就是全站静态化页面,动态的内容,并且还有助于SEO。