Как мне сделать этот ASP.NET MVC Route? - PullRequest
0 голосов
/ 08 февраля 2009

Я хотел бы получить следующие URL (ы) .. и я не уверен, как я должен делать следующее:

1) Маршрут зарегистрирован в global.asax
2) Метод управления

Urls / Маршруты

- http://www.mysite.com/
- http://www.mysite.com/?page=2
- http://www.mysite.com/?tags=fooBar
- http://www.mysite.com/?page=2&tags=fooBar

Обратите внимание - я не хочу иметь http://www.mysite.com/{page}/{tags}/ и т. Д., Если это различие имеет смысл. Я также понимаю о маршрутах по умолчанию, но я не уверен, как настроить их так, чтобы они делали то, что мне нужно.

Наконец, я также знаю, как использовать Html.ActionLink (..), так что меня это не беспокоит.

есть предложения?

Модульное тестирование

У меня также сложилось впечатление, что я могу провести модульное тестирование, например: (используя MvcFakes) ...

// Arrange.
var routes = new RouteCollection();
MvcApplication.RegisterRoutes(routes);  

// Act.
context = new FakeHttpContext("~/?page=2&tags=fooBar");
routeData = routes.GetRouteData(context);

// Assert.
Assert.AreEqual("Home", routeData.Values["controller"]);
Assert.AreEqual("Index", routeData.Values["action"]);
Assert.AreEqual(2, routeData.Values["page"]);
Assert.AreEqual("fooBar", routeData.Values["tags"]);

Обновление 1

Я надеюсь запустить все эти действия Index на стандартном HomeController, если это поможет. (на самом деле я переименовал свой HomeController в PostController, но это не очень важно / не должно влиять на проблему).

1 Ответ

1 голос
/ 09 февраля 2009

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

URL: http://www.mysite.com/?page=2&tags=fooBar

public ActionResult Index(string page, string tags)
{
   ViewData["Message"] = string.Format("Page={0}, Tags={1}", page, tags);
   return View();
}

Конечно, для контроллера "Домой" и действия "Индекс" по умолчанию. Но суть ясна, я надеюсь.

Скотт Гатри имеет отличный пост о маршрутизации Здесь

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