你的位置:首页 > 软件开发 > ASP.net > 这些理由,让我喜欢上了Mvc

这些理由,让我喜欢上了Mvc

发布时间:2016-08-07 04:00:18
最近的一段时间,让我喜欢上了mvc,对mvc又是一番见解,佩服着微软给.net带来的技术,mvc,ef1、创建项目内置了BootsrapBootsrap是一个响应式的UI界面库,能快速的搭建响应式界面,如果没有美工,对界面要求不是很高的话完全可以直接作用,很方便。Bootsrap ...

最近的一段时间,让我喜欢上了get='_blank'>mvc,对mvc又是一番见解,佩服着微软给.net带来的技术,mvc,ef

1、创建项目内置了Bootsrap

Bootsrap是一个响应式的UI界面库,能快速的搭建响应式界面,如果没有美工,对界面要求不是很高的话完全可以直接作用,很方便。

Bootsrap的推荐网站

http://getbootstrap.com/

http://www.bootcss.com/

2、url路由控制灵活,对seo友好

  1. public class RouteConfig
  2. {
  3. public static void RegisterRoutes(RouteCollection routes)
  4. {
  5. routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
  6. routes.MapRoute(
  7. name: "Default",
  8. url: "{controller}/{action}/{id}",
  9. defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
  10. );
  11. }
  12. }

 

这个是RouteConfig注册默认路由。这个类的静态方法RegisterRoutes是在网站启动的时候调用的。

这些理由,让我喜欢上了Mvc

MVC不像webform那样,一个动态url地址是对应到一个本地的一个aspx文件,而mvc是对应一个Controller(控制器)的里面的一个Action(public方法)。mvc是对应的”/Home/About“对应的就是HomeController的名字为About的Action。这种url地址到Controller的Action的对应关系你完全可以按照你的要求设置,甚至可以配置成.html结尾的伪静态

我之前写的一篇文章可以看一下”自定义route路由机制“

3、视图引擎的灵活

默认情况下创建mvc视图文件.cshtml会自动把这些同一个Controller的Action的视图放在一个文件夹。

这些理由,让我喜欢上了Mvc

对应视图文件结构

这些理由,让我喜欢上了Mvc

mvc视图自带的视图是razor引擎,可以强类型绑定视图,安全,性能方面都有保证。

要指定视图对应的model类型很简单

在Contoller里面用return View(xx)

xx为对应的一个model对象。

视图使用:

@model xxx.Models.xx

这样视图就可以用@Model.字段绑定了。

视图可以像可以定义一个共用的部分Layout(就像Webform的master母版页),头部、页脚、菜单导航等这些共用的html都可以放在Layout里面,对于局部多个地方相同的html,可以用@Html.Action("actionName","controllerName")方法来绑定一个局部视图(就像Webform的用户控件) 

 

 

Action对应的局部视图也可以定义输出缓存OutputCache单位是分钟,这样下次请求直接在缓存中取出来,提高了程序的效率。 一般对变化不频繁的Action我都这样会加上缓存。加上[ChildActionOnly]表示只能通过视图来引用,不能直接在浏览器访问。

3.1、自定义视图引擎

 

这样可以实现mvc视图主题,网站可以制作不同风格的主题,每个主题分别绑定视图就可以了。

要使自定义的视图引擎生效还需要在Global.asax加入下面的代码把默认视图引擎禁用。

  1. ViewEngines.Engines.Clear();
  2. ViewEngines.Engines.Add(new CustomRazorViewEngine());

4、Model绑定

Action的参数可以是一个个单独的参数,也可以是一个model对象,mvc可以从请求中获取到参数绑定相应的字段到model中去。这样实现了表单提交的时候,自动装配的功能,而不需要类似这样:Request.Form["xx"]获取值赋值给model。

mvc默认的参数绑定是按照以下顺序的。

Request.Form=》RouteData.Values=》Request.QueryString=》Request.Files

假设Action的一个参数id,会从下面按顺序获致id的值,一旦找到就不会再往下面寻找。

1. Request.Form["id"]

2. RouteData.Values["id"]

3. Request.QueryString["id"]

4. Request.Files["id"]

实践开发过程中的一个添加功能,绑定一个model对象,视图代码:

@model MvcModels.Models.Person@{ViewBag.Title = "CreatePerson";}<h2>Create Person</h2>@using(Html.BeginForm()) {<div>@Html.LabelFor(m => m.PersonId)@Html.EditorFor(m=>m.PersonId)</div><div>@Html.LabelFor(m => m.FirstName)@Html.EditorFor(m=>m.FirstName)</div><div>@Html.LabelFor(m => m.LastName)@Html.EditorFor(m=>m.LastName)</div><div>@Html.LabelFor(m => m.Role)@Html.EditorFor(m=>m.Role)</div><button type="submit">Submit</button>}

 

海外公司注册、海外银行开户、跨境平台代入驻、VAT、EPR等知识和在线办理:https://www.xlkjsw.com

原标题:这些理由,让我喜欢上了Mvc

关键词:mvc

mvc
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。