首页 > 代码库 > MVC-路由

MVC-路由

1. 特性验证。

//[Required]

//[StringLength(5,MinimumLength=2)]

//[Range(typeof(string),"a","z")]

//[StringLength(5, MinimumLength = 2)]

//[Range(3, 20)]       

//OutputCache特性 相当于aspx的整页缓存,默认为绝对过期时间

//[OutputCache(Duration=20,VaryByParam="id")]

//[ValidateInput(false)]//关闭请求报文中危险标签字符验证

2. 自定义验证特性类(自定义数据注解)。

3. 服务端验证(1,2都属于浏览器端的验证)

[HttpPost]

        public ActionResult Add(Models.Student model)

        {

            if (!ModelState.IsValid)

            {

                return Content("验证未通过!");

            }

            return null;

        }

4. 绝对过期时间和滑动过期时间。

5. 比较校验和远程校验。

//[Compare("CID")]//用来和CID属性的值进行比较验证

//[Remote("IsSame","Home")]//用来远程ajax请求 /Home/IsSame/Name=123的方法,会自动根据方法返回值(bool)判断是否通过验证

6. 合并js或css请求。

//合并js文件

bundles.Add(new ScriptBundle("~/jsVlidate")

.Include("~/Scripts/jquery-1.7.1.min.js")

.Include("~/Scripts/jquery.validate.min.js")

.Include("~/Scripts/jquery.validate.unobtrusive.min.js")

);

//合并css文件

bundles.Add(new StyleBundle("~/cssMty")

.Include("~/Content/1.css")

.Include("~/Content/2.css")

);

//开启 js/css 压缩合并功能

BundleTable.EnableOptimizations = true;

@Styles.Render("~/cssMty")

@Scripts.Render("~/jsVlidate")

7. MVC的异步请求方式(必须开启非侵入式Ajax)

必须引入js文件:<script type="text/javascript" src="http://www.mamicode.com/~/Scripts/jquery.unobtrusive-ajax.min.js"></script>

 

@Ajax.ActionLink("我要去广州小蛮腰", "XiaoMan", new AjaxOptions() {

        HttpMethod="post", UpdateTargetId="contDiv", InsertionMode = InsertionMode.Replace

    })

    <div id="contDiv" style="border:1px solid #0094ff; width:400px;">你有钱吗?</div>

 

    <h1>异步表单:</h1>

    @using (Ajax.BeginForm("GetDate", "Home", new AjaxOptions()

    {

        HttpMethod = "post",

        OnSuccess = "suc",

        OnFailure="err",

        LoadingElementId = "imgLoad"

    })) {

        <input type="text" name="txtName" />

        <input type="submit" />

        <div id="imgLoad">加载中~~~</div>

}

8. 路由检测组件 – RouteDebug的使用

在Web.config配置文件里<appSetting>添加

<add key=”RouteDebugger:Enable” value=http://www.mamicode.com/”true” />

9. 其他匹配方式(路由的URL语法)

Localhost:13661/home-index-a

Localhost:13661/home.index.a

Localhost:13661/home.index-a

10. 路由约束

routes.MapRoute(

                name: "Default",

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

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

                constraints: new {id =@"\d*"}

            );

11. 生成指定路由的url超链接

@Html.RouteLink(“test”,”Default”,

new { controller=”home”,action=”index”,id=1});

会根据找到的路由规则生成超链接。

12. MVC验证码

public class HelperController : Controller

    {

        /// <summary>

        /// 生成验证码

        /// </summary>

        /// <returns></returns>

        public ActionResult VCode()

        {

            Helper.VCode v = new Helper.VCode();

            byte[] arrImg = v.GetVCode();

            return File(arrImg,"image/jpge");

        }

 

    }

13. MVC中可以使用一般处理程序。

14. MVC和WebForm比较,面试回答注意。

15. 区域。

(1)尝试将区域注册类放到另一个程序集中。(根据命名空间和程序集遍历,便于分类模块,有利于类的规范。)

(2)将区域控制器放到外面程序集。

(3)当用户访问视图的时候,可以设置只访问html(不访问aspxhtmml,vbhtml)的网页,来进行优化,减轻服务器的负担。

(4)DI依赖注入。

16. MVC项目框架搭建(多个控制器共享同一个视图,真正的控制器与视图分离)

17. 面向切面编程。

MVC-路由