Добавление фрагмента URL-адреса в MVC ActionLink

вот часть моего кода

это

<%= Html.ActionLink(Model[x].Title, "Index", "q", new { slug = Model[x].TitleSlug, id = Model[x].PostID }, null)%>

создает этот URL

http://localhost:61158/q/is_there_another_indiana_jones_movie_in_the_works/4

но я хочу создать url с фрагментом, например:

http://localhost:61158/q/is_there_another_indiana_jones_movie_in_the_works/4#1

Есть ли способ сделать это, используя функцию HTML.ActionLink?

Ответы

Ответ 1

Есть две "мегаперегрузки" ActionLink, которые принимают параметр фрагмента:

public static string ActionLink(this HtmlHelper htmlHelper,
     string linkText, string actionName, string controllerName,
     string protocol, string hostName, string fragment, object routeValues,
     object htmlAttributes);
public static string ActionLink(this HtmlHelper htmlHelper,
     string linkText, string actionName, string controllerName,
     string protocol, string hostName, string fragment,
     RouteValueDictionary routeValues, IDictionary<string, object> htmlAttributes);

Подробнее о перегрузках см. MSDN.

В вашем случае это будет (и обратите внимание на параметр "фрагмент" в частности):

<%= Html.ActionLink(Model[x].Title, "Index", "q",
     /* protocol */ null, /* hostName */ null, /* fragment */ "1",
     new { slug = Model[x].TitleSlug, id = Model[x].PostID }, null) %>

С помощью "мегаперегрузок" вы можете оставить большинство значений параметров равными нулю, и они получат соответствующие значения по умолчанию.