webgrid を使用してグリッドを作成する必要があり、ユーザー ロールに基づいて編集アクションの列 (ヘッダーと項目) を非表示にしたいと考えています。
どうすればwebgridでそれを行うことができますか?
webgrid を使用してグリッドを作成する必要があり、ユーザー ロールに基づいて編集アクションの列 (ヘッダーと項目) を非表示にしたいと考えています。
どうすればwebgridでそれを行うことができますか?
ユーザーの役割に基づいて列を動的に生成するヘルパーメソッドを作成できます。
public static class GridExtensions
{
public static WebGridColumn[] RoleBasedColumns(
this HtmlHelper htmlHelper,
WebGrid grid
)
{
var user = htmlHelper.ViewContext.HttpContext.User;
var columns = new List<WebGridColumn>();
// The Prop1 column would be visible to all users
columns.Add(grid.Column("Prop1"));
if (user.IsInRole("foo"))
{
// The Prop2 column would be visible only to users
// in the foo role
columns.Add(grid.Column("Prop2"));
}
return columns.ToArray();
}
}
そしてあなたの見解では:
@{
var grid = new WebGrid(Model);
}
@grid.GetHtml(columns: grid.Columns(Html.RoleBasedColumns(grid)))