Configurando o ASP.Net MVC 4 Routing com variáveis de segmento personalizadas
Eu comecei a trabalhar em um aplicativo com algumas áreas (mestre de grade básica / sistema de tipo de detalhes ...) Eu estou olhando para tirar proveito dos bons recursos de roteamento no MVC (4 especificamente) e estou "simplesmente não entendi" Eu presumo.
Atualmente, a única rota definida é a básica:
routes.MapRoute("Default",
"{controller}/{action}/{id}",
new { controller = "Account", action = "Index", id = UrlParameter.Optional }
);
o que é bom, ele funciona com as áreas que definimos, então eu estou supondo que ele deve saber onde o usuário está e direcionar para o controlador apropriado baseado contextualmente na localização / área em que o usuário está .. tão legal ..
Agora, estou tentando criar uma nova rota que possa lidar
/someController/someAction/{statusName}
e especificamente algo como:
/OrderManager/List/New
E
/OrderManager/List/Viewed
onde "Novo" é o status "Novo" e tem a Assinatura de Ação como:
public ActionResult List(string statusName)
Eu estava supondo que eu poderia apenas adicionar a nova rota abaixo do padrão identificando "statusName" em vez de Id, mas é claro, como o H seria o mecanismo de roteamento de saber a diferença entre:
/ controller1 / action1 / 15
/ controller2 / action2 / new
Eu tentei adicionar uma rota "estática" na forma de
routes.MapRoute("Default",
"ControllerName/ControllerAction/{statusName}",
new { statusName = UrlParameter.Optional }
);
Eu pensei que poderia "hiJack" apenas que uma rota e fazer algo especial com isso, mas para saber aproveitar, o roteador pára na primeira partida? Eu estou assumindo que era o caminho errado para resolver este problema de qualquer maneira ..
então agora estou passando pela ideia de chegar a algo como:
/somecustomroutename/somesortValue
ex. / OrderManagerList / viewNew
onde essas rotas seriam basicamente "aliases". Eu pensei que adicionando a seguinte rota faria o truque:
routes.MapRoute("Default_List",
"OrderManagerList/{statusName}",
new {controller="OrderManager", action="List", statusName= UrlParameter.Optional }
);
com a ação associada no controlador OrderManager:
public ActionResult List(string statusName)
não importa o que eu tente, o argumento é nulo, ou o "recurso não pode ser encontrado"
Eu sei que os controladores precisam ter um arquivo de exibição correspondente .. mas esse não é o problema aqui, o problema é minha tentativa de entender o roteamento.
SO minhas perguntas .. fundamentalmente, o que estou faltando sobre o roteamento no MVC (4)? mesmo alguns bons artigos para um simplório como eu entender?
meu entendimento; definir uma rota, e mapear é "endpoint" .. no entanto, eu acho que não estou entendendo as suposições que a máquina está fazendo ..
De qualquer forma, deixe-me saber se mais explicar / editar é necessário ..
desde já, obrigado.