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