2016-09-09 3 views
1

Ich habe die folgende URL:Kann nicht OData in Mvc Controller lesen

http://localhost:64863/api/Entity/getStatus?%24skip=0&%24top=25&%24inlinecount=allpages&_=1473445898026 

Meine Frage ist, wie kann ich und oben in Controller überspringen lesen. Dies ist meine Controller Unterschrift:

[HttpGet("getStatus")] 
public JsonResult GetStatus(
    string filter, 
    int skip, 
    int top) 
{ 
+0

Wenn Ihre URL '/ getStatus? Skip = 0 & top = 25' anstelle von'/getStatus?% 24skip = 0 &% 24top = 25', dann sollten Sie 'skip' und "top" in Ihrem Controller. – ekad

+0

Ja, es ist wahr, aber ich kann nicht url ändern, also was ich brauche, um diese Arbeit zu machen? –

+0

Um anderen Leuten, die diese Frage ebenfalls lesen, zu helfen, welche Version von ASP.NET MVC verwenden Sie? Ich denke, es ist nicht MVC 5 oder darunter? – ekad

Antwort

0

Dies ist der Code, den ich nach erhaltener Abfrage-Zeichenfolge hinzugefügt:

private string getParameterFromUrl(string parameter) 
     { 
      string url = Request.QueryString.Value; 
      Match match = Regex.Match(url, parameter + "=([^&]*)"); 

      return match.Result("$1"); 
     } 

Wo Parameter sind überspringen oder top in meinem Fall

0

Die folgende Abfrage-String

%24skip=0&%24top=25 

wird in Request.QueryString mit den folgenden Tasten zur Verfügung: $skip und $top. Sie können die Namen der Controller-Parameter nicht in $skip und $top ändern, da Sie in Visual Studio einen Fehler erhalten und nicht kompilieren können. Sie können also die Parameter skip und entfernen und die Werte %24skip und abrufen Werte von Request.QueryString in Ihrem Controller

[HttpGet("getStatus")] 
public JsonResult GetStatus(
    string filter) 
{ 
    string skip = string.Empty; 
    string top = string.Empty; 

    if (Request.QueryString["$skip"] != null) 
    { 
     skip = Request.QueryString["$skip"]; 
    } 

    if (Request.QueryString["$top"] != null) 
    { 
     top = Request.QueryString["$top"]; 
    } 

    // do whatever you want with skip and top variable 
+0

Vielen Dank für Ihre Antwort, aber ich bekomme den folgenden Fehler: "kann die Indizierung mit [] nicht auf einen Ausdruck vom Typ 'QueryString' anwenden." –

+0

Ist dies ASP.NET MVC Controller oder ASP.NET Web Api Controller? – ekad

+0

Es ist ASP.NET MVC-Controller –

Verwandte Themen