2010-01-03 9 views
14

hier Teil meines Codes Hinzufügeneine URL Fragment zu einer MVC-Action

ist

diese

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

produziert diese URL

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

aber ich möchte eine URL mit einem Fragment erzeugen, wie folgt:

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

Gibt es einen Weg um dies mit der HTML.ActionLink-Funktion zu tun?

+0

sein, wenn jemand eine bessere Art und Weise weiß das Gefühl, zu erklären frei bearbeite diese Frage – Luke101

Antwort

21

Es gibt zwei „Mega Überlastungen“ von Action, die ein Fragment Parameter nehmen:

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); 

Siehe MSDN für weitere Informationen über die Überlastung.

In Ihrem Fall wäre es (und beachten Sie die „Fragment“ Parameter insbesondere):

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

Mit den „Mega-Überlastungen“ können Sie die meisten Parameterwerte als null verlassen und sie werden den entsprechenden Standard erhalten Werte.