本次主要分享几个场景的处理代码,有更好处理方式多多交流,相互促进进步;代码由来主要是这几天使用前端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属性值,第四个参数是是否增加全选的选项;下面再来分享下具体代码:
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
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:
admin#shaoqun.com
(#换成@)。