2009-08-05 12 views
1

Gibt es im ASP.NET MVC-Framework eine Klasse, die einen Controllernamen und einen Aktionsnamen darstellt?ASP.NET MVC-Klasse, die einen Controller + Aktionssatz darstellt?

Ich schreibe eine Methode, die eine Sammlung von URLs zurückgibt, und ich möchte, dass sie als Objekte zurückgegeben werden, die eine Eigenschaft 'Controller' und 'Aktion' oder etwas ähnliches enthalten.

Dies ist, weil ich manchmal nur den Namen des Controllers oder nur den Namen der Aktion isolieren muss.

Es gibt das Route-Objekt, aber es scheint viel zu schwer für das, was ich versuche zu tun.

Gibt es eine einfachere Abstraktion in ASP.NET MVC?

Antwort

2

Es gibt eine Controller-Basisklasse, jedoch keinen Namen, ein Aktionsname ist einfach eine Zeichenfolge, die der ActionInvoker verwendet, um über Reflektion die richtige Aktion zu finden.

Ich denke, Sie müssen die Route Values Dictionary der Schlüssel/Wert-Paare verwenden, um die Route darzustellen.

RouteValueDictionary myValues = new RouteValueDictionary(); 
myValues.Add("Controller", "myController"); 

Sie könnten ein normales Wörterbuch verwenden und es dann zu einem Routevaluedictionary in Code umwandeln, wenn Sie nicht wollen/können keinen Zugriff auf den Routing-Namensraum haben müssen.

Bei diesem Ansatz können Sie dann die Tasten des Standardwörterbuchs oder des routeValue-Wörterbuchs verwenden, um die Steuerung oder Aktion zu isolieren.

String ControlString = myValues["Controller"] 

Dann tun, was man will. Vielleicht verwenden Sie Konstanten für die Schlüssel, auf die Sie zugreifen möchten.