MVC 3 Как использовать MapRoute - PullRequest
5 голосов
/ 22 июня 2011

Может кто-нибудь показать мне, как использовать метод MapRoute? Я пытался создать свои собственные маршруты, но это не работает. То, что я хочу сделать, это маршрут, который направляет "http://servername/home/default.aspx" в контроллер" Домой "и действие" По умолчанию ". Также можно ли сказать, что если пользователь просматривает файл" default.aspx ", он на самом деле будет указать на действие «Индекс»?

Я попытался прочитать ссылки на MSDN и поискать в Google, но это не сделало меня мудрее.

Ответы [ 3 ]

8 голосов
/ 21 сентября 2011

Возможно, слишком поздно, чтобы помочь разработчику, который поднял вопрос, но может помочь кому-то еще.Впервые в MVC, но я обнаружил, что маршруты карт, похоже, обрабатываются в порядке их добавления.У меня была похожая проблема, мой конкретный маршрут не работал, пока я не начал добавлять маршрут по умолчанию в качестве последнего маршрута.

Если маршрут карты по умолчанию добавляется перед вашим пользовательским, и ваш пользовательский URL совпадает со структурой, определенной маршрутом карты по умолчанию, вы никогда не достигнете своего пользовательского маршрута.

4 голосов
/ 22 июня 2011

Маршрут, который вы хотите настроить для первой части вашего вопроса:

routes.MapRoute(
    "",
    "home/default.aspx",
     new { controller = "Home", action = "Default" }
);

Если вы хотите «просмотреть» default.aspx с каким-то параметром, вы можете сделать что-то вроде:

routes.MapRoute(
    "",
    "home/default.aspx/{param}",
    new { controller = "Home", action = "Default", param = UrlParameter.Optional }
);

И тогда вам нужно будет создать действие по умолчанию для принятия строкового параметра.

0 голосов
/ 11 июня 2014

Вы также должны убедиться, что имя параметра совпадает с именем параметра действия.Пример:

    routes.MapRoute(
        name: "MyName",
        url: "{controller}/{action}/{myParam}",
        defaults: new { controller = "MyController", action = "MyAction", id = UrlParameter.Optional }
    );

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

MyController:

public ActionResult MyAction(string myParam = "")
{

}
...