Pergunta

Eu pensei que este seria bastante fácil, mas estou totalmente perplexo.

Eu quero que as visões de um controlador para estar no nível raiz do aplicativo, em vez de em um subdiretório para esse controlador, mas eu não consigo descobrir isso.

Eu gostaria de ter essas duas URLs:

/ Info - Isso deve ação "Info" no controle "Home"

/ Admin / - Esta deve ser a ação "Index" (default) no controlador "Admin"

Até agora, não importa o que eu tentei, a primeira rota vai acabar pegando ambos. Eu não consigo separar os dois.

Essa página Informações não precisa mesmo de um controlador, é estático, mas eu quero usar uma página mestra. Pode haver uma maneira muito mais fácil de conseguir isso, mas eu não percebi o que quer.

Tudo que eu posso pensar que iria funcionar, seria a criação de um controlador Info, e mover Visualizações / Home / Informação para Views / Info / Index, mas que tem um certo cheiro a ele.

Eu era capaz de fazer isso em rails usando:

  map.connect ':controller/:action/:id'
  map.connect ':action', :controller => 'home'
Foi útil?

Solução

Você só precisa rotas adequadas. No seu caso:

routes.MapRoute(
                "Info",
                "Info",
                new { controller = "Home", action = "Info" }

routes.MapRoute(
                "Admin",
                "Admin",
                new { controller = "Admin", action = "Index" }

Mas eu recomendo que você esta abordagem .

Se você precisa de padrão mudança localização física de views / PartialViews,
confira como criar motores de exibição personalizada.

Outras dicas

Você pode usar Route atributos.

Em seu arquivo de configuração de rota você deve ter.

        routes.MapMvcAttributeRoutes();
        AreaRegistration.RegisterAllAreas();
        //code below should already be in your route config by default
        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );

Em seguida, acima de qualquer ação que você pode ter um atributo rota.

 [Route("info")]

Você pode até obter mais avançada com esses atributos, adicionando parâmetros e / ou subpastas

 [Route("blog/posts/{postId}")]

Você pode colocar o atributo acima de qualquer ação, e ela vai aparecer como se fosse proveniente do controlador de blog. No entanto, você não precisa mesmo de um controlador de blog. Também o {} significa o parâmetro, por isso certifique-se sua ação está tomando o mesmo parâmetro como o que está nas chaves. Neste caso, o parâmetro seria

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