ActionLink в форме Ruteo из-за параметров вместо QueryString

Я пробую делать, чем, использовав один ActionLink с многообразными параметрами я я произвелся соединение формы

{Controller}/{Action}/{idCompania}/{idLocal}/{fecha}

Но всегда меня производит querystring:

{Controller}/{Action}?idCompania=0&idLocal=21&fecha=23-12-2015

В global.asax я имею:

routes.MapRoute(
            "UltimosInformesDetail",
            "UltimosInformes/Details/{idCompania}/{idLocal}/{fecha}",
            new { controller = "UltimosInformes", 
                  action = "Details", 
                  idCompania="", 
                  idLocal="", 
                  fecha="" },
            null
)

Я ActionLink в виде:


    @Html.ActionLink("Detalle", 
                     "Details",
                     "UltimosInformes", 
                     new { idCompania = item.Compania, 
                           idLocal    = item.Local.Codigo, 
                           fecha      = item.Fecha.ToString("dd-MM-yyyy")}, null)

Я controller:

    public ActionResult Details(short idCompania, short idLocal,string fecha)
    {
        var s = RootContext.Instance.Resolve();

        return View(s.ObtenerAuditoresVisita(idCompania, idLocal, DateTime.Parse(fecha)));
    }

Я исследовал в SO на английском видеть здесь и здесь, Но не смог решать это

Мне не удается способствовать тому, чтобы он произвел соединение "ruteado" всегда, меня производит querystring

3
задан 23.05.2017, 15:39
1 ответ

Я протестировал твой маршрут и синтаксис хорошо.

Единственное, что возможно производит ошибку, - что маршрут "UltimosInformesDetail" который ты создал, registado после, что назначенный по умолчанию маршрут

Всегда должны идти самые специфические маршруты сначала, потом самые общие и в конце концов (если ты все еще нуждаешься в ней) назначенный по умолчанию маршрут.

routes.MapRoute(
    "UltimosInformesDetail",
    "UltimosInformes/Details/{idCompania}/{idLocal}/{fecha}",
    new
    {
        controller = "UltimosInformes",
        action = "Details",
        idCompania = "",
        idLocal = "",
        fecha = ""
    },
    null
);

routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}/{id}",
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
3
ответ дан 01.12.2019, 08:13
  • 1
    Это было этим @CarlosMu и # 241; oz, у него был плохо порядок mapeos. Спасибо! – Alan 23.12.2015, 18:48
  • 2
    Поскольку я могу посылать pará метры, если я использую á преступницы? – Tom Checa 05.10.2017, 05:54
  • 3
    @TomCheca желанный в Стакк Оверфлов в españ ol. Если у тебя есть новый вопрос, deberí схвати формулировать ее как таковой. Я рекомендую тебе завершать , пробежавший и читать CГіmo отвечать и CГіmo спрашивать . – Alvaro Montoro♦ 05.10.2017, 10:12