Хотите знать, как я должен передавать роли в представление без @model или viewbag - PullRequest
0 голосов
/ 06 апреля 2019

У меня быстрый вопрос, просто интересно, как лучше всего это сделать. Я обычно использую 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");
        }
...