Мой вопрос очень похож на другие вопросы. При использовании ActionLink в MVC .Net 4.5, я получаю строку запроса для одного параметра, а не только путь URL. Я попробовал решение HERE, но это не сработало.ActionLink показывает строку запроса вместо параметров URL
code-
Внутри RouteConfig.cs -
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "MyControllerRoute",
url: "{controller}/{action}/{id}/{description}",
defaults: new { controller = "MyController", action = "MyAction", id = UrlParameter.Optional, description = UrlParameter.Optional }
);
Внутри HomeController.cs -
public ActionResult Index(){
--do stuff--
return View();
}
Внутри MyController.cs -
public ActionResult Vote(int id, string description){
--do stuff--
return View();
}
Внутри Index.cshtml
@Html.ActionLink(
"This is stuff",
"MyAction",
"MyController",
new { id = 123, description = "This-is-stuff" },
null)
ПОЛУЧЕНИЕ Этот результат - (НЕ ТО, ЧТО Я ХОЧУ)
<a href="/MyController/MyAction/123?description=This-is-stuff">This is stuff</a>
желаемому результату - (Как я могу получить это?)
<a href="/MyController/MyAction/123/This-is-stuff">This is stuff</a>
Переместить 'MyControllerRoute' перед маршрутом по умолчанию. И удалите 'id = UrlParameter.Optional, description = UrlParameter.Optional' с маршрута' MyControllerRoute' (только последний параметр можно пометить как необязательный –
Это сработало, спасибо Стивен! Вы хотите сделать «официальный» ответ, чтобы я может дать вам кредит? Если нет, я сделаю официальный ответ для других, чтобы ссылаться. –
Причина, по которой я еще не добавил ответа, состоит в том, что его непонятно, почему вы отметили оба параметра в маршруте MyControllerRoute как необязательный. там когда-либо был случай, когда вы бы указали только «id» или «description»? (в этом случае вам понадобится другое решение) –