Frage

Ich möchte wie / users / 4 # Zusammenfassung eine RedirectToRouteResult zu Umleitung zu einer URL verwenden. Mit ASP.NET MVC 1.0, ich habe einen Weg, nicht in der Lage gewesen zu finden zu tun, dass - habe ich es verpaßt

War es hilfreich?

Lösung

Sie sollten richtig Ihre Routen in Routing-Tabelle erstellen. Zum Beispiel:.

routes.MapRoute("MyRoute" ,"{controler}/{id}#{detail}" ,new { controller = "users", action = "index", id = (string)null, detail = "Summary" });

Andere Tipps

UrlHelper.GenerateUrl enthält ein Fragment Parameter. Ich habe eine Erweiterungsmethode

        public static string Action(this UrlHelper url, string actionName, string controllerName, string fragment, object routeValues)
        {
            return UrlHelper.GenerateUrl(
                routeName: null,
                actionName: actionName,
                controllerName: controllerName,
                routeValues: new System.Web.Routing.RouteValueDictionary(routeValues),
                fragment: fragment,
                protocol: null,
                hostName: null,
                routeCollection: url.RouteCollection,
                requestContext: url.RequestContext,
                includeImplicitMvcValues: true /*helps fill in the nulls above*/
            );
        }

Dann habe ich eine RedirectToFragmentResult Klasse

public class RedirectToFragmentResult: RedirectResult
{
    public UrlHelper Url {get;set;}
    public string Action { get; set; }
    public string Controller { get; set; }
    public string Fragment { get; set; }
    public object RouteValues { get; set; }
    public RedirectToFragmentResult(UrlHelper url, string action, string controller, string fragment, object routeValues)
        :base(url.Action(action, controller, fragment, routeValues))
    {
        Url = url;
        Action = action;
        Controller = controller;
        Fragment = fragment;
        RouteValues = routeValues;
    }
}

Dann können Sie erstellen Sie einfach eine neue Routevaluedictionary (result.RouteValues) in Ihrem Gerät zu testen ihm die Möglichkeit zu überprüfen Sie mit einem RedirectToRouteResult würden.

Ich hatte ein ähnliches Problem, schauen Sie hier:

zur Lage Verknüpfung auf Seite (# id) durch ASP.NET MVC Mechanismen?

ich am Ende der Schaffung eine Route # verwenden.

Ich mache so etwas auf meiner Website hier . Aber es ist nicht mit RedirectToRouteResult. RedirectToRouteResult unterstützt nicht mit einem Ankerteil auf die URL.

Sie müssen den Link selbst und vielleicht sogar die Logik aufbauen, um die Verarbeitung des Ankerteils zu handhaben - wie ich. Meine Anwendung versucht zu replizieren eine ähnliche Funktionalität wie die der Facebook-Fotogalerie Ansichten. Jeder Link zu einer anderen Seite muss eine eindeutige URL, also dafür verwende ich den Ankerteil. Aber Coz es zu einer Route nicht direkt übersetzt Ich habe den Anker Teil der URL manuell auf der Seite und die Verwendung AJAX Last in dem entsprechenden Inhalt zu analysieren. Dies ist, was ich wollte, so ist es für mich funktioniert.

Laden Sie die Quellcode von MVC und überprüfen, wie RedirectToRouteResult funktioniert

Es kann bessere Möglichkeiten, aber eine einfache Vererbung von RedirectToRouteResult und eine Überschreibung von ExecuteResult zu ermöglichen, eine optionale Ankerteil sollte das Problem beheben

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top