windows.location = url нарушает привязку MVC - PullRequest
0 голосов
/ 06 декабря 2018

Я работаю над функцией javascript, которая должна перенаправлять пользователя на новую страницу после получения определенных данных.

Мой пример иллюстрирует идею:

var userId = getUserId(e);
var url = baseUrl + "/EditUserRoles/" + userId;
window.location.href = url;

В моем контроллере у меня есть следующий метод:

    [HttpGet]
    public IActionResult EditUserRoles(int userId)
    {
        return View(userId);
    }

Если вы установите точку останова в методе, он будет выполненно userId всегда равен 0 независимо от предыдущего значения в javascript

Что я здесь не так делаю?

1 Ответ

0 голосов
/ 06 декабря 2018

Это появляется, потому что ваш маршрут по умолчанию ожидает идентификатор, а не userId

routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);

3 варианта, выберите только один:

1 - Измените id на userId в MapRoute (я быне рекомендуется)

2 - добавить параметр url userId в javascript

var url = baseUrl + "/EditUserRoles/?userId=" + userId;

3 - изменить имя параметра на id в контроллере

public IActionResult EditUserRoles(int id)

ПодробнееИнформация: https://docs.microsoft.com/en-us/aspnet/mvc/overview/older-versions-1/controllers-and-routing/asp-net-mvc-routing-overview-cs

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