Como devo fazer esta rota MVC ASP.NET?
-
22-08-2019 - |
Pergunta
i deseja ter a seguinte url (s) .. e eu não sei como eu deveria fazer o seguinte:
1) Rota registrado no global.asax
2) Método controlador
Urls / Rotas
- http://www.mysite.com/
- http://www.mysite.com/?page=2
- http://www.mysite.com/?tags=fooBar
- http://www.mysite.com/?page=2&tags=fooBar
Por favor, note - Eu não quero ter http://www.mysite.com/{page}/{tags}/
etc .. se que diferença faz sence. Eu também entendo sobre as rotas padrão, mas não tenho certeza de como ajustá-los para torná-lo fazer o que eu preciso.
Por fim, eu também sei como usar Html.ActionLink (..) por isso não estou preocupado sobre como usá-lo.
alguma sugestão?
Unidade de Teste
Eu também estou sob a impressão de que eu poderia fazer um teste de unidade, como o seguinte: - (Usando 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"]);
Update 1
Eu estou esperando para executar todos estes da ação índice no HomeController padrão, se isso ajuda. (Na verdade, eu renomeado meu HomeController para PostController mas isso não é realmente / importante não deve efetuar o problema).
Solução
Na verdade, para o que você está tentando fazer você não precisa de rota adicional. A rota MVC padrão lida bem com o seu pedido. Você apenas tem que ter em mente que os nomes dos parâmetros de ação do controlador deve coincidir com seus nomes param 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();
}
É isso é curso para Controller "Home" e Ação "Index" como padrão. Mas a questão é clara esperança I.
Scott Guthrie tem um excelente post sobre roteamento Aqui