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?

Foi útil?

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.

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