Posso gerar rotas ASP.NET MVC a partir de um Sitemap?
-
08-06-2019 - |
Pergunta
Estou pensando em aprender o ASP.NET MVC
estrutura para um próximo projeto.Posso usar o roteamento avançado para criar URLs longos com base na hierarquia do mapa do site?
Exemplo de caminho de navegação:
Home > Loja > Produtos > Doméstico > Cozinha > Panelas > Conjuntos de panelas > Antiaderente
URL MVC típico (eu acho):
http://example.com/products/category/NonstickCooksets
URL desejado:
http://example.com/shop/products/household/kitchen/cookware/cooksets/nonstick
Posso fazer isso?
Solução
Zack, se bem entendi, você quer profundidade ilimitada nas subcategorias.Nada demais, desde o MVC Preview 3 (acho que 3 ou 4) isso foi resolvido.
Basta definir uma rota como
"{controlador}/{ação}/{*categoryPath}"
para um URL como:
http://example.com/shop/products/household/kitchen/cookware/cooksets/nonstick
você deve ter um ShopController com uma ação Products:
public class ShopController : Controller
{
...
public ActionResult Products(string categoryPath)
{
// the categoryPath value would be
// "household/kitchen/cookware/cooksets/nonstick". Process it (for ex. split it)
// and then decide what you do..
return View();
}
Outras dicas
O roteamento MVC permite definir praticamente qualquer estrutura desejada, você só precisa definir o que cada uma das peças significa semanticamente.Você pode ter bits "codificados", como "loja/produtos", e então definir o restante como variável, "{categoria}/{subcategoria}/{especialidade}", etc.
Você também pode definir várias rotas que mapeiam para o mesmo ponto final, se desejar.Basicamente, quando uma URL entra em seu aplicativo MVC, ela passa pela tabela de roteamento até encontrar um padrão que corresponda, preenche as variáveis e passa a solicitação para o controlador apropriado para processamento.
Embora a rota padrão seja um tipo de configuração simples de Controlador, Ação e ID, essa certamente não é a extensão do que você pode fazer.