ASP.Net MVC 2 RC2: пользовательский маршрут возвращает 404, когда все необязательные параметры равны нулю - PullRequest
1 голос
/ 19 февраля 2010

Я получаю сообщение об ошибке 404 при переходе по следующему URL-адресу по указанному ниже маршруту:

http://localhost:53999/properties/

Тем не менее, все следующее правильно перенаправлено на действие Список в моем контроллере:

http://localhost:53999/properties/usa/new-york/manhattan/12

http://localhost:53999/properties/usa/new-york/manhattan

http://localhost:53999/properties/usa/new-york

http://localhost:53999/properties/usa

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

    //properties
    routes.MapRoute(
        "Properties",
        "Properties/{country}/{state}/{city}/{id}",
        new
        {
            controller = "Properties",
            action = "List",
            country = UrlParameter.Optional,
            state = UrlParameter.Optional,
            city = UrlParameter.Optional,
            id = UrlParameter.Optional
        } 
    );

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

В PropertiesController.cs:

public ActionResult List(string country, string state, string city, string id)
{
     return View();
}

Кто-нибудь знает, что мне не хватает? Похоже, он должен просто перейти к действию по умолчанию, но, очевидно, это не так ...

Ответы [ 4 ]

2 голосов
/ 19 февраля 2010

Вы также можете попробовать следующее (поскольку вы используете MVC 1.0).

Добавить маршрут выше текущий маршрут:

routes.MapRoute(
    "Properties", "Properties", new { controller = "Properties", action = "List"} 
);

И добавитьперегруженный ActionResult List() метод для вашего контроллера:

public ActionResult List()
{
     return View();
}
1 голос
/ 20 февраля 2010

Вы пробовали это Route Debugger от Фила Хаака?Это может помочь вам определить, что происходит.

0 голосов
/ 20 февраля 2010

Брэд Уилсон ответил на это сообщение: http://forums.asp.net/p/1527697/3690295.aspx#3690295

"Нет, проблема в том, что у вас есть папка Properties на диске, поэтому она отправляется через стандартный диспетчер (не MVC), а затем 404ing, потому что не может найти документ по умолчанию."

0 голосов
/ 19 февраля 2010

вместо прохождения

(string)null

попробуйте пройти

UrlParameter.Optional

как указано в сообщении Фила Хаака здесь . Я не знаю, решит ли это проблему, поскольку в настоящее время у меня нет возможности ее протестировать.

...