asp-route в строке таблицы не пропускается id - PullRequest
0 голосов
/ 27 сентября 2019

asp-route, похоже, неправильно передает Id моему методу просмотра при использовании его в теге.Идентификатор передается как «ноль».Когда я использую его с тегом, он работает нормально (за исключением того, что он не открывает модальный);тем не менее, я хочу сделать всю строку доступной для редактирования.

Я попытался проверить регистр, чтобы убедиться, что это не что-то глупое;однако, когда тот же код вставляется в тег, он имеет 0 проблем.Когда я смотрю в консоль, я вижу, что asp-route-id вытягивает правильный идентификатор.Он попадает в контроллер и проходит через if (user == null), потому что он входит как ноль.

HTML:


    @model PortalDev.Models.ApplicationUser

    <tr data-toggle="ajax-modal" data-target="#editUser" data-url="@Url.Action("EditUser")" asp-action="EditUser" asp-controller="Administration" asp-route-id="@Model.Id">
        <td class="text-left">@Model.Id</td>
        <td class="text-left">@Model.UserName</td>
        <td class="text-left">@Model.Email>
        <td class="text-left">@Model.PhoneNumber</td>
        <td class="text-left">@Model.City</td>
        <td>
            <button type="button" id="btnOpen" class="btn btn-primary btn-sm" data-toggle="modal" data-target="#SendEmail">
                <i class="glyphicon glyphicon-envelope"></i>
            </button>
            <a asp-action="EditUser" asp-controller="Administration" asp-route-id="@Model.Id">Edit</a>
        </td>
    </tr>

Контроллер:


        [HttpGet]
        public async Task<IActionResult> EditUser(string id)
        {
            var user = await userManager.FindByIdAsync(id);
            if (user == null)
            {
                ViewBag.ErrorMessage = $"User with Id = {id} cannot be found";
                return View("NotFound");
            }

            var userClaims = await userManager.GetClaimsAsync(user);
            var userRoles = await userManager.GetRolesAsync(user);

            var model = new EditUserViewModel
            {
                Id = user.Id,
                Email = user.Email,
                UserName = user.UserName,
                City = user.City,
                Claims = userClaims.Select(c => c.Value).ToList(),
                Roles = userRoles
            };
            return PartialView("~/Views/Modals/_EditUserModalPartial.cshtml", model);
        }

Ожидаемое поведение - щелкнуть строку таблицы и вызвать модальное окно с EditUserViewModel

1 Ответ

0 голосов
/ 27 сентября 2019

Заменить data-url="@Url.Action("EditUser")" на data-url="@Url.Action("EditUser", new {Id = Model.Id})".Это сгенерирует правильный URL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...