У меня проблема с ViewBag, не работающим в поле зрения. Контроллер возвращает то, что мне нужно ..
При отладке у меня Current = false, а затем при просмотре результатов у меня тоже false. Бит установлен в ложь. Кажется, что все элементы ViewBag возвращают False для Current.
Когда я вызываю ViewBag в моем View, он, похоже, ничего не делает. Это тоже не вина.
Вот мой раздел кода, где я получаю текущую информацию о bool из массива.
if (GetOrPost == "GET")
{
if (actionName == "add" || actionName == "index" || actionName == "create" || actionName == "edit" || actionName == "delete" || actionName == "multiviewindex")
{
ViewBag.Add = menuaccess.Where(i => i.MenuURL == controllerName).Select(i => (i.IsAdd));
ViewBag.Read = menuaccess.Where(i => i.MenuURL == controllerName).Select(i => (i.IsRead));
ViewBag.Create = menuaccess.Where(i => i.MenuURL == controllerName).Select(i => (i.IsCreate));
ViewBag.Edit = menuaccess.Where(i => i.MenuURL == controllerName).Select(i => (i.IsUpdate));
ViewBag.Delete = menuaccess.Where(i => i.MenuURL == controllerName).Select(i => (i.IsDelete));
}
}
Это использование в представлении:
@if (ViewBag.Edit = true)
{
@Ajax.ModalDialogActionLink("Edit", "Edit", "Edit User", "btn btn-warning btn-sm", new { UserName = item.UserName })
}
MenuOfRole возвращает все разрешения для входа в RoleUser. В зависимости от контроллера и действия я могу извлечь то, что я нужно, где я нахожусь.
Любые идеи о том, почему он не работает в представлении. А также, если есть более простой и понятный способ сделать это - у меня все уши!
Спасибо
ОБНОВЛЕНИЕ: Я сделал проверку в представлении - просто вернул ViewBag, и это возвращаясь к истине, но в Контроллере говорится, что это ложь. Я не уверен, почему это так. Если ViewBag установлен в контроллере как false Он должен отображаться в представлении как false, не так ли?
Редактировать: По запросу вот мой ForEach l oop.
<tbody>
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.UserName)
</td>
<td>
@Html.DisplayFor(modelItem => item.Email)
</td>
<td>
@Html.DisplayFor(modelItem => item.Role)
</td>
<td>
@Html.DisplayFor(modelItem => item.LockoutEndDateUtc)
</td>
<td>
@Html.DisplayFor(modelItem => item.CompanyName)
</td>
<td>
@if (ViewBag.Edit == true)
{
@Ajax.ModalDialogActionLink("Edit", "Edit", "Edit User", "btn btn-warning btn-sm", new { UserName = item.UserName })
}
@if (User.IsInRole("Administrator"))
{
@Ajax.ModalDialogActionLink("PW Reset", "SendResetPassword", "Account", "Reset Password", "btn btn-info btn-sm", new { UserName = item.UserName })
<text> </text>
@Ajax.ModalDialogActionLink("Conf E-Mail", "SendEmailConfirm", "Account", "Email Confirmation", "btn btn-info btn-sm", new { UserName = item.UserName })
}
@if ((item.UserName.ToLower() != this.User.Identity.Name.ToLower()))
{
if (ViewBag.Delete == true)
{
@Html.ActionLink("Delete", "Delete", null, new { UserName = item.UserName },
new { onclick = "return Confirm('Are you sure you want to delete this user?');", @class = "btn btn-danger btn-sm" })
}
<div class="btn-group">
@Html.ActionLinkAuthorized("Edit Roles", "Edit", "Roles", new { UserName = item.UserName }, new { @class = "btn btn-warning btn-sm" }, true)
</div>
}
</td>
</tr>
}
</tbody>
Обновление: полный ответ на этот go на этот пост.
stackoverflow.com / Вопросы / 60173428 /