C #, ASP.NET MVC / MVC2: добавление группового маршрута для конкретного контроллера - помощь в построении маршрута - PullRequest
1 голос
/ 15 июля 2010

Допустим, у меня есть контроллер с именем Store. Есть индексный метод:

public ActionResult Index(string val, long? id, int? id2)
{
  return View();
}

Я хочу получить такие вещи, как:

/my-store/some-text 
/my-store/some-text/
/my-store/some-text/123456789012335
/my-store/some-other-text/4562343462345
/my-store/some-other-bla-text/4562343462345/1
/my-store/some-other-bla-bla-text/45345723554/2

Итак, требования:
+ текст ссылки на контроллер "my-store" и должен направлять к контроллеру Store
+ если есть только какой-то текст и идентификатор, просто оставьте id2 пустым
+ если есть только какой-то текст и нет идентификатора, просто оставьте id и id2 пустыми

Правильно ли следующее?

routes.MapRoute(
    "Store", // Route name
    "my-store/{val}/{id}/{id2}", // URL with parameters
    new { controller = "Store", action = "Index", id = UrlParameter.Optional, id2 = UrlParameter.Optional }
);

Заранее благодарю за помощь!

1 Ответ

1 голос
/ 15 июля 2010

Да, выглядит хорошо, за исключением того, что вам нужно определить значение по умолчанию для {val} в вашем маршруте:

routes.MapRoute(
"Store", // Route name
"my-store/{val}/{id}/{id2}", // URL with parameters
new { controller = "Store", action = "Index", val = "", id = UrlParameter.Optional, id2 = UrlParameter.Optional }

Просто не забудьте очистить строку в val, как будто у вас есть несколько забавных символов, тогда ваша ссылка не будет работать. Например, допустим, что val равен "thisis / val" , тогда ваша ссылка будет:

/ мой-магазин / Thisis / вал / 1212/12

Который не попадет на ваш маршрут и скорее всего вернет 404

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