Создание ActionLink в представлении MVC

#c# #asp.net-mvc #razor

#c# #asp.net-mvc #razor

Вопрос:

Я довольно новичок в MVC, поэтому, пожалуйста, извините мое, возможно, неправильное использование терминологии.

В файле RouteConfig.cs моего приложения MVC есть эти маршруты.MapRoute :-

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

Ключевая строка, являющаяся :-

 url: "{controller}/{action}/{id}"
  

итак, я последовал примеру создания ActionLinks, которые были созданы в моем шаблоне приложения по умолчанию, и собрал эту строку :-

 <p>@Html.ActionLink("portfolio details", "Detail", "Portfolio", new { portfolioId = portfolio.PortfolioId } , new { @class = "btn btn-default" })</p>
  

Однако это дает мне URL :-

 http://localhost:xxxxx/Portfolio/Detail?portfolioId=174198
  

Если я не хочу, чтобы идентификатор был в параметре QueryString, как мне создать ссылку, соответствующую шаблону, который ожидается в маршрутах.Проложите маршрут так, чтобы я получал URL-ссылку, такую как:- ?

http://localhost:xxxxx/Portfolio/Detail/174198

Комментарии:

1. <p>@Html.ActionLink("portfolio details", "Detail", "Portfolio", new { portfolio.PortfolioId } , new { @class = "btn btn-default" })</p> попробуйте это

Ответ №1:

Вы можете использовать этот способ

 <p>@Html.ActionLink("portfolio details", string.Format("Detail/{0}", portfolio.PortfolioId ), "Portfolio", null, null)</p>
  

Комментарии:

1. Спасибо, хотя выглядит неаккуратно, и когда я попытался объединить идентификатор с подобной строкой в первом экземпляре (перед публикацией), это исказило его и добавило странные символы в ссылку.

Ответ №2:

Предполагая, что у вашего действия контроллера есть параметр id , тогда вы могли бы сделать:

 <p>@Html.ActionLink("portfolio details", "Detail", "Portfolio", new { id = portfolio.PortfolioId } , new { @class = "btn btn-default" })</p>
  

Это должно дать вам:

 http://localhost:xxxxx/Portfolio/Detail/174198
  

Это передалось бы 174198 действию контроллера в качестве id параметра.

Комментарии:

1. Я могу только предположить, что вы были отмечены из-за вашей грамматической ошибки, прежде чем это решение дало мне ответ, который я хотел.