Звучит так, будто вы действительно хотите настроить схему URL-маршрутизации.Именно для этого предназначен параметр «значения маршрута» в большинстве перегрузок ActionLink.Вы можете предоставить значения этому методу, которые используются для заполнения значений в ваших сопоставленных маршрутах.По умолчанию к одному маршруту добавляется значение «id», поэтому в вашем случае вы можете сделать это:
@Html.ActionLink("link", "Home", "Index", new { id = "bob" })
, и вы получите URL, который выглядит следующим образом:
http://www.site.com/Home/Index/bob
Если вам также нужен параметр id, вы можете добавить произвольные новые элементы в карту маршрутов в своем коде Global.asax:
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{user}/{id}", // URL with parameters
new
{
controller = "Home",
action = "Index",
user = "guest",
id = UrlParameter.Optional
} // Parameter defaults
);
Теперь вы можете использовать любой изследующее:
@Html.ActionLink("link", "Home", "Index", new { id = 1 })
@Html.ActionLink("link", "Home", "Index", new { user = "bob" })
@Html.ActionLink("link", "Home", "Index", new { user = "bob", id = 1 })
И вы получите, соответственно:
http://www.site.com/Home/Index/guest/1
http://www.site.com/Home/Index/bob
http://www.site.com/Home/Index/bob/1
MVC-маршрутизация довольно мощная, но, как и большинство мощных, также сложная. Эта статья дает вам хорошее введение.Он написан для старой версии MVC, но основы те же (просто измените [] на {} в маршрутах.)
Кроме того, если вы не хотите, чтобы не забыли добавить пользовательский параметрдля каждого вызова вы можете создать свои собственные методы расширения HtmlHelper или UrlHelper, чтобы сделать это для вас:
public static MvcHtmlString MyActionLink ( this HtmlHelper html, string text, string action, string controller, IDictionary<string, object> attrs)
{
var data = new { user = GetTheUser() };
return html.ActionLink(text, action, controller, data, attrs)
}
(при необходимости добавьте дополнительные перегрузки; просто передайте "null" для действия, контроллера, данных и т. д.если вы хотите использовать значения по умолчанию.)