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).

Foi útil?

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top