Маршрут не решается - PullRequest
       19

Маршрут не решается

3 голосов
/ 09 февраля 2010

Я хочу чистые URL и определил два маршрута:

routes.MapRoute(
    "Search",
    "Search",
    new { controller = "Search", action = "SearchPanel" }
);
routes.MapRoute(
    "SearchResults",
    "Search/{content}",
    new { controller = "Search", action = "Search", content = string.Empty, query = string.Empty, index = 0 }
);

, затем у меня есть два действия:

[HttpPost]
public ActionResult Search(string content, string query)
{
    if (string.IsNullOrEmpty(query))
    {
        return RedirectToAction("Home", "Application");
    }
    return RedirectToAction("Search", new { content = content, query = query }); ;
}

public ActionResult Search(string content, string query, int? index)
{
    if (string.IsNullOrEmpty(query))
    {
        return RedirectToAction("Home", "Application");
    }

    switch (content)
    {
        case "products":
            // get products
            return View("ResultsProducts");
        case "categories":
            // get categories
            return View("ResultsCategories");
        default:
            // get all
            return View("ResultsAll");
    }
}

У меня есть общая панель поиска на главной странице, котораятекстовое поле и кнопку отправки.Это отправляет /Search.Имя текстового поля query.Все отлично и замечательно.Когда я нажимаю Search, выполняется мое первое действие, но оно не выполняется при вызове RedirectToAction():

Ни один маршрут в таблице маршрутов не соответствует указанным значениям.не могу найти причину, по которой это не работает.

Ответы [ 2 ]

2 голосов
/ 15 июля 2010

У меня была такая же проблема, и, к счастью, это помогло мне, поэтому я хочу что-то вернуть.

Похоже, в MVC 2 произошли изменения, которые заставляют вас объявлять маршруты другим способом.

Чтобы иметь дополнительные значения маршрута (например, контент), вы не должны назначать значение по умолчанию для string.Empty, а иметь

content = UrlParameter.Optional

Это должно позволить вашим оценкам маршрута вести себя так же, как в MVC 1.

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

Удаление content, query и index из значений по умолчанию на втором маршруте решило проблему.Почему я не могу точно сказать, потому что они просто определяют значения по умолчанию, когда они не предоставлены, что в моем случае не так.Я все равно предоставляю эти значения.

...