本章向大家分享一下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> }
以前是:
<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> }
以前是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
ViewResult :使用View()可以指定一个页面,也可以指定传递的模型对象,如果没有指定参数则表示返回与Action同名 的页面
ContentResult :使用Content(string content)返回一个原始字符串
RedirectResult :使用Redirect(string url)将结果转到其它的Action
JsonResult :返回一个Json对象,一般配合ajax使用默认是:
<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项目就是全站静态化页面,动态的内容,并且还有助于SEO。