Frage

ich will Route Werte von Routetable abrufen, aber es ist null. Kann jemand helfen?

public static class GetRouteValues
{
    public static string GetSomeValue()
    {
        RouteCollection routes = RouteTable.Routes;
        var value = routes["somevalue"].ToString();
        return value;
    }
}

Ich möchte diesen Wert abrufen für einige Routen Wert in global.asax-Datei und Satz als Standardwert verwendet wird.

string value = GetRouteValues.GetSomeValue();
routes.MapRoute(null,
                        "{_value}/home",
                        new
                        {
                            _value = value,
                            controller = "home",
                            action = "index"
                        });
War es hilfreich?

Lösung

Ok, wenn Sie versuchen, die aktuelle Route zu bekommen, können Sie dies aus einem Controller ....

var completeRoute = this.ControllerContext.RouteData.Route;
//or
var justValue = this.ControllerContext.RouteData.Values["value"]

Lassen Sie mich wissen, wenn das ist, was Sie nach ...

UPDATE:

Ok ich denke, das sollte das tun, was Sie nach. Sie sollten in jedem Kontext Objekt ohne den Weg dies zu verwenden, in einer statischen Methode in der Lage sein.

var httpContext = new HttpContextWrapper(HttpContext.Current); 
var requestContext = new RequestContext(httpContext, new RouteData());
var completeRoute = requestContext.RouteData.Route;
var justValue = requestContext.RouteData.Values["value"];

Ich hoffe, das hilft.

Andere Tipps

habe ich anthonyv Antwort für meine statische Klasse, aber die Ergebnisse waren null. Die folgenden arbeitete für mich (ähnlich wie den Zugriff auf Session-Objekte in einer statischen Klasse).

var controller = HttpContext.Current.Request.RequestContext.RouteData.Values["controller"];
var action = HttpContext.Current.Request.RequestContext.RouteData.Values["action"];

würde Globale schön, aber bisher habe ich es nur im Regler gesehen:

Namespace Controllers
  Public Class HomeController
    Inherits BaseController
      Dim routeValues = System.Web.HttpContext.Current.Request.RequestContext.RouteData.Values
      Dim actionName As String
      Dim controllerName As String

      Public Function Index(id As String) As ActionResult
        Try
            Dim x As Integer = 0
            Dim y As Integer = 5
            Dim z As Integer = y / x
        Catch ex As Exception
            If routeValues IsNot Nothing Then
                If routeValues.ContainsKey("action") Then
                    actionName = routeValues("action").ToString()
                End If
                If routeValues.ContainsKey("controller") Then
                    controllerName = routeValues("controller").ToString()
                End If
            End If

            Log.LogError(ex, controllerName, actionName)
        End Try
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top