我正在开发一个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 {##}#")
}
}