Вопрос

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

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

URL-адреса / Маршруты

- 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, но это не очень важно / не должно влиять на проблему).

Это было полезно?

Решение

На самом деле для того, что вы пытаетесь сделать, вам не нужен дополнительный маршрут.Маршрут 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();
}

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top