如何在Kendo Grid ClientTemplate的If条件中使用ViewBag

时间:2018-07-17 13:25:08

标签: asp.net-mvc kendo-grid kendo-asp.net-mvc

我正在将一些ID加载到ViewBag中,以在相关的View中使用它的数据。

var userAccountList =serviceResponse.RoleList.Select(x => x.RoleId).ToList();
ViewBag.UserRoles = userAccountList;

此结果为List<string>

在“视图”中,剑道网格从json检索数据。

@(Html.Kendo().Grid<RoleModel>().Name("KendoGrid").Scrollable().Columns(columns =>
 {
        columns.Bound(x => x.Id)
            .HtmlAttributes(new { style = "text-align:center;"})
            .ClientTemplate("# if ( Id != '3'){
                #<a class='k-button' href=\"/Role/Delete/#= Id #\"><span class='k-icon k-delete' style='pointer-events: none;'></span>Delete</a># }#")
            .Width(85).Sortable(false)
            .Hidden(!((BaseController)this.ViewContext.Controller).UserHasPermission(PermissionType.RoleDelete));
        columns.Bound(x => x.Name);

....
 }

当我使用诸如'3'之类的静态值时,可以防止显示用作删除按钮的a标签。如果列表包含绑定到列的ViewBag.UserRoles,如何在这种条件下使用Id

1 个答案:

答案 0 :(得分:0)

通常,要使用Razor,您必须执行类似的操作

.ClientTemplate("# if ( Id != "'+ @ViewBag.UserRole +'")

如果我们正在谈论一个字符串值。 现在,根据您的情况,您可以使用Template代替ClientTemplate进行类似的操作

.Template(
    @<text>
         @if (ViewBag.UserRoles.Any(u => u == item.Id))
         {
            ... add your link
         }
   </text>

您可以在此post中找到更多示例。 很可能它也有文档,因为我现在找不到我想要的东西。