如何使用安全标记创建剑道控件



我正在开发一个MVC Web应用程序,在Razor视图上,我打算使用Kendo控件或Html5控件,并将基于角色的安全性分配给标签本身中的HTML5/Kendo控件,而不是C#代码或javascript代码。怎么能做到这一点?

我粘贴了一个已经在页面中开发的示例代码 ASP.net 但现在我需要在 MVC 剃须刀视图中执行此操作。

谢谢- 维贾亚。

代码如下:

<abcd123:Abcd123SecurityContext ID="msc" runat="server" Abcd123Security-Entity="CenterGroup"
    Abcd123Security-AccessLevel="Compose" Abcd123Security-AccessLevelIfQS="Edit" Abcd123Security-QSParameters="GroupID"
    Abcd123Security-ShowMode="PlainText" />
<abcd123:Abcd123SecurityPageAccess ID="mspa" Abcd123Security-AccessLevel="Read" runat="server"
    AbcdTx-QSParameters="GroupID" />

我可以想到三种方法。例如,如果要转换为 razor 并希望在配置时应用"数据属性",则可以为常用控件设置使用HtmlAttribute,为支持该方法的控件设置ClientTemplate。此外,您可以在自己的扩展方法中扩展 Kenod.Mvc 包装器,将安全要求添加为属性。然后,您可以访问类似于以下内容的控件:

@(Html.MyControl()
    .Name("MyControl")
    .SecurityAccess("Read")
...
)

老实说,我会查看上面的 HtmlHelper 类链接,使 Razor HtmlAtrribute 将使用的新扩展

@(Html.Kendo().Menu().HtmlAttributes(new {data-access-level="Read"})
...
)

客户端模板

@(Html.Kendo().Grid<Some.Domain.Data.SomeObject>().HtmlAttribute(new {data-grid-attribute='@Model.SomeID'}
   .Name("grdMy")        
   .Columns(columns =>
   {
        columns.Bound(t => t.MyField).Width(65).Title("MyTitle")
            .ClientTemplate("#if(MyField!=null){# <a class='test' href='javascript:void(0)' data-custom-field='#=MyID#' data-custom-field2='#=MyID2#'>#=DisplayText#</span> #} else {##}#")
   }
}