2016-09-09 31 views
1

我有以下網址:不容MVC中的控制器讀取的OData

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

我的問題是我怎麼能讀在控制器跳過頂部。這是我的控制器簽名:

​​
+0

如果你的URL是'/ getStatus?skip = 0&top = 25'而不是'/ getStatus?%24skip = 0&%24top = 25',那麼你應該可以讀取'skip'和您的控制器中的「頂部」。 – ekad

+0

是的,它是真實的,但我不能更改網址,所以我需要做這個工作? –

+0

爲了幫助其他人也閱讀這個問題,您使用的是哪個版本的ASP.NET MVC?我猜這不是MVC 5或以下? – ekad

回答

0

這是GET查詢字符串後,我加入了代碼:

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中發生錯誤並且無法編譯,因此您可以刪除skiptop參數並獲取%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控制器 –