ASP.NET MVC C# contrôleur et le nom de l'action dans la classe

Je suis assez nouveau à StackOverflow alors pardonne tous les signes de mon ignorance. 🙂

J'ai un peu problème mineur avec une application MVC dans Visual Studio 2010 (Contrôleurs écrit en C#).
Je veux créer une méthode qui génère une demande d'action de l'histoire et à cette fin, je veux obtenir le nom du contrôleur et l'action qui sont utilisés chaque fois. Malheureusement, la première lettre de la chaîne qui retient mon nom de contrôleur est toujours manquant.
J'ai utilisé ce 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();

Où OwnedContext est définie comme ceci:

    private class OwnedContext : HttpContextBase
    {
        private readonly HttpRequestBase mockHttpRequestBase;

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

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

Le nom de l'action est stocké correctement, mais lorsque je debug ce code, je vois que la controllerName chaîne de caractères contenant le nom du responsable, mais la première (du Capital), la lettre est toujours manquant, même si la chaîne de l'url contient une valeur avec ce pattern: /controller/action.

Je vais apprécier tous les pointeurs, les exemples de code ou une explication de pourquoi cela se produit. Si ma description n'est pas exacte laissez-moi savoir, je vais l'améliorer.

Merci d'avance 🙂

EDIT: SOLUTION TROUVÉE:

Trouvé le problème (en quelque sorte): Il y a quelque chose de mal avec OwnedContext (défini dans ma question initiale). Au début, j'ai utilisé routeValueDictionary comme HarHaHu suggéré, mais le problème a persisté, jusqu'à ce que j'ai placé httpContext comme GetRouteData du paramètre:

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

Où httpContext a une coutume de lecture:

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

De cette façon, j'ai omis le OwnedContext et a finalement obtenu mon contrôleur nom complet (par exemple: Meubles et non urniture).

Merci pour les conseils. 🙂
Espérons que cela aide quelqu'un. Bonne chance!

Toute chance de poster votre itinéraire définitions de global.asax? De toute évidence quelque chose a été mal traduit à partir de l'URL ro de la route.
mon global.asax contenait les routes par défaut généré avec le MVC3 modèle d'application

OriginalL'auteur Maciej Ogonowski | 2012-03-05