Маршрутизация необязательных параметров с тире в MVC - PullRequest
3 голосов
/ 20 мая 2010

Я сделал определение маршрута следующим образом:

 routes.MapRoute("ProductSearch", "Search-{MainGroup}-{SubGroup}-{ItemType}",
   new {
    controller = "Product",
    action = "Search",
    MainGroup = "", SubGroup = "", ItemWebType = ""});

Не работает, если параметры пусты. Фактически он разрешает URL, поэтому метод Url.Action разрешает путь «Поиск-12--», но ссылка не работает, поэтому не работает GET страницы

С косыми чертами работает метод Url.Action делает "Поиск / 12"

"Search/{MainGroup}/{SubGroup}/{ItemType}"

Можно ли как-то это исправить?

Я сделал пример с проектом MVC по умолчанию: Только добавлено: до маршрута по умолчанию:

    routes.MapRoute(DefaultSearch", "Search-{MainGroup}-{Subgroup}-{ItemType}",
        new {controller = "Home",action = "About", MainGroup = "", 
              Subgroup = "", ItemType = ""});

в Home / index.aspx:

<a href="<%=Url.Action("About", "Home", new {maingroup = "2", subgroup = "", itemType = ""}) %>">
    Search</a>

В HomeController:

public ActionResult About(string maingroup, string subgroup, string itemtype)
{
  return View();
}

Нажмите на ссылку и 404

1 Ответ

1 голос
/ 08 июня 2010

Какую версию вы используете? в MVC 2 вы можете использовать UrlParameter.Optional в качестве значений по умолчанию для маршрутов.

...