MVC ActionLink fügt alle (optionalen) Parameter der aktuellen URL hinzu

as sehr berühmteActionLink:

 <%: Html.ActionLink("Back to List", "Index")%>

Nun, dieser Link befindet sich in meiner Detailansicht. Die Indexansicht ist eine Suchseite. Die URL sieht so aus:

http://localhost:50152/2011-2012/Instelling/Details/76?gemeente=Dendermonde&postcode=92**&gebruikerscode=VVKSO114421&dossiernr=114421%20&organisatie=CLB

Wie Sie sehen können, ziemlich viele Parameter. Natürlich möchte ich all diese Parameter behalten, wenn ich zur Indexseite zurückkehre, also muss ich sie im @ -Zeichen hinzufügeActionLink.

Nun, ich bin es leid, das manuell zu tun, es ist in Ordnung für 1, aber nicht für 6. Dies sollte viel einfacher gehen.

Frage: Wie gebe ich alle Parameter der aktuellen URL in das @ zurücActionLink als optionalesRouteValues.

Ich habe gesucht, umRequest.QueryString. Es muss etwas damit sein. Ich habe darüber nachgedacht, eine statische Methode in @ zu schreibeGlobal.asax macht den Job, aber noch kein Glück. Vielleicht gibt es einen einfachen Weg, den ich nicht kenne?

Bearbeiten Das habe ich mir ausgedacht (was funktioniert)

Im global.asax:

    public static RouteValueDictionary optionalParamters(NameValueCollection c) {
        RouteValueDictionary r = new RouteValueDictionary();
        foreach (string s in c.AllKeys) {
            r.Add(s, c[s]);
        }
        return r;
    }

Details.aspx:

    <%: Html.ActionLink("Back to List", "Index", MVC2_NASTEST.MvcApplication.optionalParamters(Request.QueryString))%>

Wo setze ich diesen Code am besten ein? nicht inGlobal.asax Ich vermute..

Edit 2:

using System;
using System.Web.Mvc;

namespace MVC2_NASTEST.Helpers {
    public static class ActionLinkwParamsExtensions {
        public static MvcHtmlString CustomLink(this HtmlHelper helper, string linktext) {
            //here u can use helper to get View context and then routvalue dictionary
            var routevals = helper.ViewContext.RouteData.Values;
            //here u can do whatever u want with route values
            return null;
        }

    }
}


<%@ Import Namespace="MVC2_NASTEST.Helpers" %>
...
<%: Html.ActionLinkwParams("Index") %>

Antworten auf die Frage(10)

Ihre Antwort auf die Frage