ASP.NET MVC C# Get-controller und action Namen in der Klasse

Ich bin ziemlich neu auf StackOverflow also bitte verzeiht mir irgendwelche Zeichen meiner Unwissenheit. 🙂

Habe ich eine etwas kleinere Ausgabe mit einer MVC-Anwendung in Visual Studio 2010 (Controller in C# geschrieben).
Ich möchte eine Methode erstellen, die erzeugt eine Anwendung, die Handlung der Geschichte und für diesen Zweck möchte ich, um den Namen des Controllers und der action, die verwendet werden, jedes mal. Leider sind die ersten Buchstaben der Zeichenfolge, die hält mein controller name fehlt immer.
Ich habe diesen code:

    string url = HttpContext.Current.Request.RawUrl;
    RouteData route = RouteTable.Routes.GetRouteData(new OwnedContext(url));
    var values = route.Values;
    string controllerName = values["controller"].ToString();
    string actionName = values["action"].ToString();

Wo OwnedContext ist wie folgt definiert:

    private class OwnedContext : HttpContextBase
    {
        private readonly HttpRequestBase mockHttpRequestBase;

        public OwnedContext(string appRelativeUrl)
        {
            this.mockHttpRequestBase = new OwnedRequest(appRelativeUrl);
        }

        public override HttpRequestBase Request
        {
            get { return mockHttpRequestBase; }
        }
    }

Den Namen der Aktion wird korrekt gespeichert, aber wenn ich debug in diesem code sehe ich, dass der controllerName Zeichenfolge enthält den Namen des Controllers, aber die erste (Kapital -) Buchstaben immer fehlt, obwohl die url-Zeichenfolge enthält einen Wert, der mit diesem Muster: /controller/action.

Ich Schätze alle Hinweise, code-Beispiele oder eine Erklärung, warum dies geschieht. Wenn meine Beschreibung ist nicht genau, lassen Sie mich wissen, ich werde es verbessern.

Vielen Dank im Voraus 🙂

EDIT: LÖSUNG GEFUNDEN:

Das problem gefunden (eine Art): Es war etwas falsch mit OwnedContext (definiert in meiner ursprünglichen Frage). Bei der ersten habe ich routeValueDictionary als HarHaHu vorgeschlagen, aber das ursprüngliche problem blieb, bis ich platziert httpContext als GetRouteData parameter:

    string url = HttpContext.Current.Request.RawUrl;
    RouteData route = RouteTable.Routes.GetRouteData(httpContext);
    UrlHelper urlHelper = new UrlHelper(new RequestContext(httpContext, route));

    var routeValueDictionary = urlHelper.RequestContext.RouteData.Values;
    string controllerName = routeValueDictionary["controller"].ToString();
    string actionName = routeValueDictionary["action"].ToString();

Wo httpContext hat eine eigene getter:

    public new HttpContextBase httpContext
    {
        get
        {
            HttpContextWrapper context =
                new HttpContextWrapper(System.Web.HttpContext.Current);
            return (HttpContextBase)context;
        }
    }

Diese Weise habe ich weggelassen, die OwnedContext und endlich meinen controller mit dem vollständigen Namen (zum Beispiel: Möbel und nicht urniture).

Danke für die Tipps. 🙂
Hoffe, das jemand hilft. Viel Glück!

Eine chance der Veröffentlichung Ihrer route Definitionen von global.asax? Offensichtlich etwas ist immer falsch übersetzt aus der URL-ro-route.
mein global.asax enthalten die Standard-Routen generiert, mit dem MVC3-Anwendung-Vorlage

InformationsquelleAutor Maciej Ogonowski | 2012-03-05

Schreibe einen Kommentar