Другая проблема маршрутизации MVC - PullRequest
1 голос
/ 03 июня 2011

Однажды я пойму маршрутизацию, но вот что у меня есть:

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



            routes.MapRoute(
                "Default", // Route name
                "{controller}/{action}/{LicenceCode}", // URL with parameters
                new { controller = "Home", action = "Index", LicenceCode = UrlParameter.Optional } // Parameter defaults
            );

        }

Если я пойду на http://localhost все в порядке

Если я перейду к http://localhost/Home/Index/1234, то все в порядке

если я пойду к http://localhost/1234 это 404

Я попробовал отладчик маршрута Фила Хаака, но из-за того, что он выдает 404, отладчик маршрута не работает.

Что я должен делать в RegisterRoutes, чтобы http://localhost/1234 работал

Ответы [ 4 ]

1 голос
/ 03 июня 2011

Вы должны использовать следующий корень вместо своего:

routes.MapRoute(
    "Default", // Route name
    "{LicenceCode}", // URL with parameters
    new { controller = "Home", action = "Index", LicenceCode = UrlParameter.Optional } // Parameter defaults
);
1 голос
/ 03 июня 2011
routes.MapRoute(
    "LicenceCode",
    "{LicenceCode}"
    new { controller = "Home", action = "Index", LicenceCode = UrlParameter.Optional } // Parameter defaults
);

Затем /1234 будет перенаправлен на действие Index контроллера Home:

public ActionResult Index(string licenceCode)
{
    ...
}
0 голосов
/ 07 июня 2011

Установка маршрута по умолчанию, как указано выше. RoutsMapRoute ("Default", // Имя маршрута "{LicenceCode}", // URL с параметрами new {controller = "Home", action = "Index", LicenceCode = UrlParameter.Optional} // Параметры по умолчанию);

, но тогда НЕ ДОБАВЛЯЙТЕ 1000 строк маршрутов в global.asax Я видел, как это было сделано на нескольких сайтах MVC 1, и поддерживать его действительно ужасно.

Для других маршрутов обрабатывайте их через виды и контроллеры.Пример:

  1. В Контроллере: в методе ActionResults вы можете сделать возврат RedirectToAction ("ClientEnrollment", "Cis");

  2. В представлении: наличие ссылки @ Html.ActionLink («Выбрать», «ClientDetails», «Cis», новый {id = item.ClientId}, null) |

0 голосов
/ 03 июня 2011

У меня нет Visual Studio передо мной, но я думаю, что это будет

routes.MapRoute(
    "Default2",
    "{LicenceCode}",
    new { controller = "Home", action = "Index", LicenceCode = UrlParameter.Optional }
);

Вы определенно захотите добавить это последнее в свои регистрации маршрутов, так как это может угнать довольно многопути, я бы вообразил.

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