ASP.NET MVC Как правильно сопоставить параметр в URL-маршрутизации - PullRequest
0 голосов
/ 04 июня 2009

У меня есть следующий маршрут

        routes.MapRoute(
            "Segnalazioni_CercaSegnalazioni",
            "Segnalazioni/CercaSegnalazioni/{flag}",
            new { controller = "Segnalazioni", action = "CercaSegnalazioni", flag = 7 }
        );

, который отображается на следующий метон класса SegnalazioniController:

    public ActionResult CercaSegnalazioni(int flag)
    {
        ViewData["collezioneSegnalazioni"] = Models.Segnalazioni.Recupera(flag);
        System.Xml.Linq.XElement x = (System.Xml.Linq.XElement)ViewData["collezioneSegnalazioni"];
        return View("Index");
    }

Как получается, что ссылка http://localhost:1387/Segnalazioni/CercaSegnalazioni/1 дает мне ошибку

The parameters dictionary contains a null entry for parameter 'flag' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult CercaSegnalazioni(Int32)' in 'RecuperoPagatiMvc.Controllers.SegnalazioniController'. To make a parameter optional its type should be either a reference type or a Nullable type.
Nome parametro: parameters 

Ответы [ 2 ]

1 голос
/ 04 июня 2009

Опубликуйте все ваши маршруты. Похоже, ваш URL обрабатывается другим маршрутом, чем этот. Помните, порядок ваших маршрутов имеет значение. Поэтому, если у вас есть другой маршрут ДО того, на который этот URL может отображаться, он будет.

0 голосов
/ 05 июня 2009

MvcContrib содержит отладчик маршрута. Используйте его, и вы увидите, какой маршрут вызывается для этого URL. Здесь приведены инструкции по его включению

...