基于 HtmlHelper 的自定义扩展Container
发布时间:2020-12-16 09:01:27 所属栏目:asp.Net 来源:网络整理
导读:基于 HtmlHelper 的自定义扩展Container Intro 基于 asp.net mvc 的权限控制系统的一部分,适用于对UI层数据呈现的控制,基于 HtmlHelper 的扩展组件 Code 基于 asp.net mvc 的权限控制系统示例代码:https://github.com/WeihanLi/AccessControlDemo 权限控
基于 HtmlHelper 的自定义扩展ContainerIntro基于 asp.net mvc 的权限控制系统的一部分,适用于对UI层数据呈现的控制,基于 Code基于 asp.net mvc 的权限控制系统示例代码:https://github.com/WeihanLi/AccessControlDemo 权限控制核心代码:https://github.com/WeihanLi/AccessControlDemo/tree/master/AccessControlHelper SparkContainer 代码: 1 public class SparkContainer : IDisposable 2 { 3 private readonly string _tagName; 4 readonly ViewContext _viewContext; 5 bool _canAccess; 6 _disposed; 7 8 _content; 9 10 public SparkContainer(ViewContext viewContext,string tagName,1)">bool canAccess = true) 11 { 12 _viewContext = viewContext; 13 _tagName = tagName; 14 _canAccess = canAccess; 15 if (!_canAccess) 16 { 17 _content = (_viewContext.Writer as StringWriter).GetStringBuilder().ToString(); 18 } 19 } 20 21 void Dispose() 22 23 Dispose(); 24 GC.SuppressFinalize(this25 26 27 protected virtual void Dispose( disposing) 28 29 _disposed) 30 31 _disposed = ; 32 EndShopContainer(); 33 34 35 36 EndShopContainer() 37 38 39 40 (_viewContext.Writer StringWriter).GetStringBuilder().Clear().Append(_content); 41 42 else 43 44 _viewContext.Writer.Write("</{0}>",_tagName); 45 46 47 } ? 扩展方法 /// <summary> /// SparkContainer </summary> <param name="helper">HtmlHelper</param> <param name="tagName">标签名称<param name="attributes">htmlAttributes<param name="accessKey">accessKey<returns></returns> static SparkContainer SparkContainer(this HtmlHelper helper,1)">object attributes = null,1)">string accessKey = "") { // ... return SparkContainerHelper(helper,tagName,HtmlHelper.AnonymousObjectToHtmlAttributes(attributes),displayStrategy.IsControlCanAccess(accessKey)); } static SparkContainer SparkContainerHelper( tagName,IDictionary<string,1)">object> attributes = ... TagBuilder tagBuilder = new TagBuilder(tagName); if (canAccess) { tagBuilder.MergeAttributes(attributes); helper.ViewContext.Writer.Write(tagBuilder.ToString(TagRenderMode.StartTag)); } return SparkContainer(helper.ViewContext,canAccess); } ? Use使用说明: @using(Html.SparkContainer(div",1)">new { @class=containerabcd })) { @Html.Raw(1234) } ? 没有权限访问时就不会将内容渲染到页面,有权限访问时实际渲染生成的 Html 如下: 1 <div ="container" custom-attribute="abcd"> 2 1234 3 </div> ? Contact如果您有什么问题或建议,欢迎与我联系 weihanli@outlook.com (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net – CSRF验证令牌:会话ID安全吗?
- asp.net-mvc – 什么CAPTCHA系统与ASP.NET MVC兼容?
- ASP.Net/web.config – “条目’x’已经输入”?
- asp.net-mvc – 为什么大多数MVC样本控制器代码都返回Actio
- 学习Asp.Net WebForms或Asp.Net MVC
- asp.net – 在下拉列表中防范用户输入?
- asp.net-mvc – WebGrid和EF4属性
- razor-pages – 何时使用LocalRedirect与RedirectToPage
- asp.net-mvc – 启用/禁用每个控制器/操作方法的会话状态
- Asp.net验证网络文件地址是否有效的方法
推荐文章
站长推荐
- 基于ASP.Net Core开发的一套通用后台框架
- 使用MVC和ASP.NET身份认证网址
- asp.net-mvc – 使用Razor视图引擎 – 如何格式化
- 在asp.net mvc中绑定缺少元素的数组
- asp.net-mvc-4 – ASP.NET Web API的自定义MVC A
- asp.net – 如何将kendo Ui下拉选择值的ID传递给
- asp.net-mvc – Orchard CMS:退出(注销)确认页面
- asp.net-mvc – 保护ASP.Net MVC站点
- asp.net-mvc – 为什么ASP.Net MVC(或CodeIgnite
- asp.net – 在Response.Redirect之后获取上一页网
热点阅读