У меня быстрый вопрос, просто интересно, как лучше всего это сделать. Я обычно использую viewbag, но есть ли другой способ, которым я должен это делать, потому что я слышал, что viewbag - это не очень хорошая вещь, которую нужно делать часто.
Я получаю пользователя по его имени, а затем получаю список его ролей с помощью [httppost]. Как я должен передать роли обратно в представление? У меня уже есть модель пользователя, вставленная в представление @model, поэтому я не могу вставить ее так, как это возвращает view (). Что мне делать для этого?
<div class="panel panel-primary">
<div class="panel-heading text-center">
<h4>Get Role for Selected User</h4>
</div>
<div class="panel-body">
@using(Html.BeginForm("GetUserRole", "Admin"))
{
@Html.AntiForgeryToken()
<p>
User Name: @Html.DropDownList("username",
(IEnumerable<SelectListItem>)
ViewBag.Users, "Select ...")
<input type="submit" value="Get User Role"
class="btn btn-info" />
</p>
}
@if(ViewBag.RolesForUser != null)
{
<div class="alert alert-info">
<strong>Role for User</strong>
<ol>
@foreach(string str in ViewBag.RolesForUser)
{
<li>@str</li>
}
</ol>
</div>
}
</div>
</div> [HttpPost]
[ValidateAntiForgeryToken]
public async Task<ActionResult> GetUserRole(string username)
{
if (!string.IsNullOrWhiteSpace(username))
{
var user = await UserManager.FindByNameAsync(username);
var roles = await UserManager.GetRolesAsync(user.Id);
// ?? ?? or a different way
ViewBag.RolesForUser = roles;
}
return RedirectToAction("RoleManager", "Admin");
}