#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-ссылку, такую как:- ?
Комментарии:
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. Я могу только предположить, что вы были отмечены из-за вашей грамматической ошибки, прежде чем это решение дало мне ответ, который я хотел.