Вызов 2 действий из 2 разных представлений в одном контроллере. Всегда вызывается одно и то же действие (первое в конфиге Route) - PullRequest
0 голосов
/ 01 марта 2020

У меня есть контроллер с именем Pedidos , внутри есть 2 метода:

    public ActionResult Create(string id)
    {
        //...
    }

    public ActionResult CreateEAN(string id)
    {
        //...
    }

Когда я вызываю каждый метод из javascript (изнутри каждого соответствующего представления), всегда вызывается тот же метод, тот, который первый в конфигурации Route, в данном случае это CreateEAN это конфигурация Route:

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

    routes.MapRoute(
        name: "Default",
        url: "{controller}/{action}",
        defaults: new { controller = "Sesion", action = "Identificacion" }
    );

    routes.MapRoute(
    "Pedidos1",
    "{Pedidos}/{CreateEAN}/{id}",
    new
    {
        controller = "Pedidos",
        action = "CreateEAN",
        id = UrlParameter.Optional
    });

    routes.MapRoute(
    "Pedidos2",
    "{Pedidos}/{Create}/{id}",
    new
    {
        controller = "Pedidos",
        action = "Create",
        id = UrlParameter.Optional
    });
}

Вот как я вызываю этот метод из Javascript:

1)

<script type="text/javascript">
    function CambioDeposito()
    {
        var sid = $("#ddlDeposito").val();
        window.location.href = '@Url.Action("CreateEAN", "Pedidos")' + '/' + sid;
    }
</script>

2)

<script type="text/javascript">
        function CambioDeposito()
        {
            var sid = $("#ddlDeposito").val();
            window.location.href = '@Url.Action("Create", "Pedidos")' + '/' + sid;
        }
</script>

Если я изменю порядок в конфигурации маршрута, тогда Создать будет одним это всегда называется. Я понимаю, что они похожи, но эти 2 действия имеют разные названия! почему маршрутизация терпит неудачу, как это? Как я могу это исправить, чтобы в каждом случае вызывался правильный метод?

Спасибо !!

1 Ответ

1 голос
/ 01 марта 2020

Ваши URL-адреса маршрутизации неверны из-за фигурных скобок.

Использование фигурных скобок в строке URL делает этот параметр ключевого слова. Ваш единственный параметр - {id}, поэтому вы должны удалить другие фигурные скобки.

routes.MapRoute(
    "Pedidos1",
    "Pedidos/CreateEAN/{id}",
    new
    {
        controller = "Pedidos",
        action = "CreateEAN",
        id = UrlParameter.Optional
    });

routes.MapRoute(
    "Pedidos2",
    "Pedidos/Create/{id}",
    new
    {
        controller = "Pedidos",
        action = "Create",
        id = UrlParameter.Optional
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...