Pergunta

Normalmente meus URLs parecido com o padrão: www.example.com/controller/action

Agora eu quero configurar minha seção da administração como:

 www.example.com/admin/
 www.example.com/admin/user/list
 www.example.com/admin/content/add
etc.

Assim, o formato é: www.example.com/admin/controller/action

Eu não consigo descobrir como configurar as rotas para que ele se parece com o acima.

Foi útil?

Solução

Você só precisa mapear um novo caminho com a seção 'admin' codificado no início da definição de rota.

Por exemplo adicionar este a suas rotas em RegisterRoutes no arquivo Global.asax.cs e certifique-se que aparece acima da rota padrão (supondo que você não adicionou outras rotas):

routes.MapRoute(
    "Default",                                              
    "admin/{controller}/{action}/{id}",                     
    new { controller = "Home", action = "Index", id = "" } 
);

Nota: a parte 'admin' codificado no início da definição de rota .

Nota 2:. Se você adicionou outras rotas além do padrão, você vai precisar para se certificar de suas rotas são ordenados corretamente

Aqui está um link para um bom blog post de roteamento MVC sobre Scott Guthrie : URL Routing

Outras dicas

A resposta de Kelsey é direito sobre a marca, mas eu queria acrescentar algo à discussão. Outra opção é na verdade não têm rotas "admin" em tudo, mas em vez disso requerem sessões autenticadas de administração para realmente acessar as URLs restritos.

Este é muitas vezes como as coisas são feitas em aplicações "tradicionais" RESTful. Seu controlador representa o tipo de recurso que você está manipulando, a ação é o verbo, eo id é o identificador único para um membro específico desse recurso.

Em outras palavras, em vez de ter:

/content/list (for normal users)
/admin/content/add (for admins)

Você teria

/content/list (for everyone)
/content/add (for admin, but must be authenticated to work)

Adicionar / admin / para a URL não realmente adicionar qualquer benifits (exceto, talvez, que você pode escrever sua lógica de garantir com apenas uma única regra contra qualquer coisa em / admin), mas a troca é mais rotas complicado e quebrando padrão RESTful . Quebrando as práticas padrão não é em si mesmo uma coisa ruim, mas você deve considerar que eles são padrão para uma razão, e, a menos que você tem benefícios específicos para quebrá-los, você pode considerar aderir a elas.

Note-se que em ambos os estilos de URL que você precisa para ser autenticar o usuário, caso contrário, ninguém poderia usá-lo.

Em ASP.NET MVC, você pode restringir o acesso a acções (ou até mesmo controladores inteiros) com base no nível do usuário usando ActionFilters. Decorando suas ações só-administrador com esses filtros, você pode garantir que os usuários administrativos impostos única autenticados pode realmente usá-los.

Leia blog de Scott Gu ou Rob Connery de postar para obter mais informações.

A partir de MVC versão 2 eles adicionaram o conceito de 'área' que lhe permite fazer isso corretamente :) Aqui é post de ScottGu sobre MVC 2 Pré-visualização .

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