你的位置:首页 > 软件开发 > ASP.net > MVC常遇见的几个场景代码分享

MVC常遇见的几个场景代码分享

发布时间:2016-08-31 01:00:04
本次主要分享几个场景的处理代码,有更好处理方式多多交流,相互促进进步;代码由来主要是这几天使用前端Ace框架做后台管理系统,这Ace是H5框架里面的控件效果挺多的,做兼容也很好,有点遗憾是控件效果基本都是写一起的,分离起来挺麻烦的;这次主要说的是后端代码,以后可以分享下这个框架的 ...

本次主要分享几个场景的处理代码,有更好处理方式多多交流,相互促进进步;代码由来主要是这几天使用前端Ace框架做后台管理系统,这Ace是H5框架里面的控件效果挺多的,做兼容也很好,有点遗憾是控件效果基本都是写一起的,分离起来挺麻烦的;这次主要说的是后端代码,以后可以分享下这个框架的使用。

 

以上是个人的看法,下面来正式分享今天的文章吧:

. 扩展HtmlHelper,枚举转化select下拉框效果

. 自定义ActionFilter,验证登陆和权限访问

. 扩展HtmlHelper,无限递归生成菜单栏

. Global中增加全局Application_Error监控404异常

. 实现及使用缓存工厂(最新缓存工厂代码在上一篇分享的缓存工厂之Redis缓存)

 

下面一步一个脚印的来分享:

. 扩展HtmlHelper,枚举转化select下拉框效果

枚举转化select下拉框效果,这个效果估计很多同学都遇到过,也一定有自己的想法与实践;因为这里是MVC框架,所以这里我直接扩展HtmlHelper,这样在页面使用起来也很方便;这里了解一下这样的场景,通常枚举在方法中传递都只能是定义好的某一个枚举,这样来生成select标签扩展性就不强;这个时候有朋友就想到如果使用enum来当做方法的参数呢,这样是不行的,enum不能直接用来当做方法参数(看官们可以试试),所以这样看就没法定义一个公共的参数来传递不同枚举了,当然万能的Type给了我们一点曙光,下面我们就使用Type当做参数来传递枚举;

首先,我们既然要扩展HtmlHelper,那必须遵循一定的规则:

1.定义扩展类的类名通常使用Extension结尾,这里咋们定义个名称为HtmlHelperExtension的扩展类

2.扩展方法参数中使用this HtmlHelper html作为第一个参数

3.扩展方法返回MvcHtmlString把内容输出到试图View中

再来,自定义方法如:public static MvcHtmlString DrpDownByEnum(this HtmlHelper html, Type ty, get='_blank'>string name = "Status", bool isAll = true);第二个参数就是上面说到的Type,她针对说有类型不仅仅局限于枚举,因为这里说的是使用枚举所以这里的职责就是负责枚举类型的传入,第三个参数是每个html标签都应该具备的name属性值,第四个参数是是否增加全选的选项;下面再来分享下具体代码:

MVC常遇见的几个场景代码分享MVC常遇见的几个场景代码分享
 1 /// <summary> 2     /// 根据枚举获取DrpDownList 3     /// </summary> 4     /// <param name="ty"></param> 5     /// <param name="name"></param> 6     /// <param name="isAll"></param> 7     /// <returns></returns> 8     public static MvcHtmlString DrpDownByEnum(this HtmlHelper html, Type ty, string name = "Status", bool isAll = true) 9     {10       var sbHtml = new StringBuilder(string.Empty);11       sbHtml.AppendFormat("<select class='form-control' name='{0}'>", name);12       if (isAll)13       {14 15         sbHtml.AppendFormat("<option value='{0}'>{1}</option>",16                  "-1",17                  "==全部==");18       }19       var vals = Enum.GetValues(ty);20       for (int i = 0; i < vals.Length; i++)21       {22         var val = vals.GetValue(i);23         var text = Enum.Parse(ty, val.ToString()).ToString();24         sbHtml.AppendFormat("<option value='{0}'>{1}</option>",25          (int)val,26           text);27       }28       sbHtml.Append("</select>");29       return MvcHtmlString.Create(sbHtml.ToString());30     }

原标题:MVC常遇见的几个场景代码分享

关键词:mvc

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