2016-09-09 3 views
1

У меня есть следующий URL:не могу прочитать OData в MVC контроллер

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

Мой вопрос заключается в том, как я могу прочитать пропустить и верхней в контроллере. Это мой контроллер подписи:

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

Если ваш URL-адрес '/ getStatus? Skip = 0 & top = 25' вместо'/getStatus?% 24skip = 0 &% 24top = 25', то вы должны иметь возможность читать 'skip' и 'top' в вашем контроллере. – ekad

+0

Да, это правда, но я не могу изменить URL-адрес, так что мне нужно сделать эту работу? –

+0

Чтобы помочь другим людям, которые также прочитали этот вопрос, какую версию ASP.NET MVC вы используете? Я предполагаю, что это не MVC 5 или ниже? – ekad

ответ

0

Это код, я добавил после доставай QueryString:

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

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

Где параметр пропустить или top в моем случае

0

Следующая строка запроса

%24skip=0&%24top=25 

будет доступен в Request.QueryString со следующими ключами: $skip и $top. Вы не сможете изменить имена параметров контроллера до $skip и $top, так как вы получите сообщение об ошибке в Visual Studio и не сможете скомпилировать его, поэтому вы можете удалить параметры skip и top и получить %24skip и %24top значения от Request.QueryString в контроллере

[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

Благодарим вас за ответ, но я получаю следующую ошибку: «Невозможно применить индексирование с [] к выражению типа« QueryString »». –

+0

Является ли этот ASP.NET MVC-контроллер или ASP.NET Web Api-контроллером? – ekad

+0

Это ASP.NET MVC-контроллер –