У меня есть метод, который добавляет роли для пользователя. Он отлично работает, когда это константная строка. Теперь я хочу дать имя роли из ввода, и здесь у меня проблема с передачей текста в actionlink. Как это сделать ? Вот код, который у меня работает со строкой констант:
Вид:
@model AdminMVC.Models.Admin.UserViewModel
<input class = "form-control" type = "text" name = "role" placeholder = "Role name">
@Html.ActionLink("Add role", "AddRoleToUser", new { id = Model.ApplicationUser.Id }, new { @class = "fas fa-user-edit" })
Контроллер:
public async Task<IActionResult> AddRoleToUser(string id, string role)
{
var user = await _userManager.FindByIdAsync(id);
if (await _roleManager.RoleExistsAsync("NewRole"))
{
await _userManager.AddToRoleAsync(user, "NewRole");
}
return RedirectToAction("Roles");
}





Используйте форму для размещения значения:
@using(Html.BeginForm("AddRoleToUser", new { id = Model.ApplicationUser.Id }))
{
<input class = "form-control" type = "text" name = "role" placeholder = "Role name">
<input type = "submit" value = "Add role" class = "fas fa-user-edit" />
}
вы должны использовать значения маршрута для ссылки действия, чтобы отправлять значения контроллеру. но опять же вам нужно будет получить входное значение и установить его в качестве значения маршрута ссылки действия. вы можете использовать форму для этого (замените ссылку действия и используйте вместо этого кнопку отправки). или вы можете использовать jQuery для динамической установки значения маршрута ссылки действия перед выполнением запроса.