2015-07-28 1 views
4

У меня есть MVC Действие Ссылка:MVC ActionLink добавление маршрута в строку запроса, а не маршрут значения

@Html.ActionLink("Update Information", "Index", "Performance", 
new { performanceid = item.PerformanceId }, null) 

HREF выглядит следующим Ссылка действия как это:/Performance/Index performanceid = 100

В моей RouteConfig? .cs у меня есть следующие маршруты в следующем порядке:

routes.MapRoute(
     "ShowPerformanceOptions", 
     "Performance/{performanceid}/Index", 
     new { controller = "Peformance", action = "Index" } 
); 

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

Я не хочу QueryString добавлены в конец URL, я бы вместо того, чтобы как URL, чтобы выглядеть следующим образом:/Perfor mance/360/Index

У меня было множество различных параметров, включая добавление параметров маршрута и необязательных параметров URL-адреса и изменение способа написания моего ActionLink. Ничто не работает.

Любые идеи кто-нибудь?

+0

У вас есть опечатка в определении параметров маршрута по умолчанию, это 'Pformance' вместо' Perform ance'. – haim770

+0

Это тоже работает! Хорошее место, я думал, что, должно быть, было что-то не так, чтобы он не узнал ни одного из моих маршрутов, которые я указал! Спасибо –

ответ

2

Для генерации URL на основе имя маршрута, используйте метод Html.RouteLink()

@Html.RouteLink("Update Information", "ShowPerformanceOptions", new { performanceid = item.PerformanceId }) 

Хороший прочитать What's the difference between RouteLink and ActionLink in ASP.NET MVC?

+0

Собственно, 'ActionLink' * должен * использовать указанный шаблон. – haim770

+0

@ haim770, да, даже если бы это сработало, но я не уверен, что он сгенерирует якорный тег – Satpal

2

Как @Satpal указывалось, ActionLink не работает из-за опечатки в сам маршрут:

routes.MapRoute(
     "ShowPerformanceOptions", 
     "Performance/{performanceid}/Index", 
     new { controller = "**Peformance**", action = "Index" } 
); 

routes.MapRoute(
     "ShowPerformanceOptions", 
     "Performance/{performanceid}/Index", 
     new { controller = "**Performance**", action = "Index" } 
);