Pergunta

Eu sou novo para terra MVC, e ter um aplicativo que eu estou trabalhando. eu tenho 2 links diferentes com 2 rotas no meu global, que são bastante semelhante

Percurso 1

routes.MapRoute("Category", "Movies/{category}/{subcategory}", 
    new { controller = "Catalog", action = "Index", category = "", subcategory = "" });

rota 2

routes.MapRoute("Movie", "Movie/{movie}", 
    new { controller = "Movie", action = "Index", movie = "" });

Quando eu chamar um actionlink para a primeira rota cria-lo como eu acho que deveria:

.../Movies/Category/SubCategory

No entanto, quando eu criar o meu segundo link ele preenche-lo assim:

.../Movie?movieId=ff569575-08ec-4049-93e2-901e7b0cb96a

Eu estava usando uma string em vez de um guid antes e ainda estava fazendo o mesmo i.

.../Movie?movieName=Snatch

meus actionlinks são configurados como segue

<%= Html.ActionLink(parent.Name, "Index", "Catalog",
    new { category = parent.Name, subCategory = "" }, null)%>

<%= Html.ActionLink(movie.Name, "Index", "Movie", 
    new { movieId = movie.MovieId }, null)%>

Meu aplicativo ainda funciona, mas eu pensei que este comportamento era estranho. qualquer ajuda seria ótimo.

Obrigado!

Foi útil?

Solução

routes.MapRoute("Movie", "Movie/{movieId}", 
    new { controller = "Movie", action = "Index", movie = "" });

Caso o texto rota não coincidir com o nome da propriedade que você está enviando para o link MVC?

Outras dicas

O problema é que quando você chamar ActionLink, o sistema de roteamento não consegue descobrir qual das duas rotas para o uso, por isso escolhe a primeira. A solução é usar RouteLink vez de ActionLink. RouteLink permite que você especifique o nome da rota para uso ao gerar o URI. Então, não há ambigüidade sobre qual rota para uso. Eu acho que ActionLink é obsoleto. Não consigo pensar em nenhuma razão para usá-lo em vez de de RouteLink.

No entanto, você ainda pode ter um problema quando as ligações submete usuário. Nesse caso, o uso de rotas restrições para impor a selecção da rota correta.

Andrew está correta (up-votado) que os tokens que você usa no ActionLink / RouteLink ea rota em si deve corresponder.

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