** Я пытаюсь создать вид с сеткой
Макет вида, который я использую: **
@model IEnumerable<VC.MC.ReportalWeb.UI.Users>
@using myspace
@{
ViewBag.Title = "Users";
var grid = new WebGrid(source: Model, canSort: true);
}
<h2>Users</h2>
<p>
@Html.ActionLink("Create New", "Create")
</p>
@grid.GetHtml(columns: grid.Columns(
grid.Column("UserName"),
grid.Column("Email"),
grid.Column(
header: "",
style: "text-align-center",
format: (item) => new HtmlString(Html.ActionLink("Edit", "Edit", new { id = item.id ).ToString() + " | " +
Html.ActionLink("Details", "Details", new { id = item.id }).ToString() + " | " +
Html.ActionLink("Delete", "Delete", new { id = item.id }).ToString()))
)
)
@grid.GetHtml(columns: grid.Columns(Html.RoleBasedColumns(grid)))
@{
if (!string.IsNullOrWhiteSpace(grid.SortColumn))
{
<script type="text/javascript">
$('thead > tr > th > a[href*="sort=@grid.SortColumn"]').parent().append('@(grid.SortDirection == SortDirection.Ascending ? "^" : "v")');
</script>
}
}
RoleBasedColumns (сетка):вспомогательный метод в моей бритве, который
public static WebGridColumn[] RoleBasedColumns(
this HtmlHelper htmlHelper,
WebGrid grid
)
{
var user = htmlHelper.ViewContext.HttpContext.User;
var columns = new List<WebGridColumn>();
var query = from p in _adminModelContainer.Users
select p;
IList<Users> userList = query.ToList();
for (int i = 0; i < userList.Count; i++)
{
// The Prop1 column would be visible to all users
columns.Add(grid.Column("UserName"));
if (userList[i].RolesId == 1)
{
// The Prop2 column would be visible only to users
// in the foo role
columns.Add(grid.Column("Email"));
}
}
return columns.ToArray();
}
Я хочу показывать кнопки редактирования и удаления ссылок только для тех пользователей, чей RolesId равен 1.
Используя вышеупомянутую функциональность, сетка просто реплицирует себя. Показываются заголовки столбцов, для которых roleid равен 1.
Я в исправлении.
Любая помощь будет полезна.
Спасибо