我正在将一些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
?
答案 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中找到更多示例。 很可能它也有文档,因为我现在找不到我想要的东西。