无法在mvc控制器中读取odata

时间:2016-09-09 18:33:21

标签: odata asp.net-mvc-5

我有以下网址:

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

我的问题是如何在控制器中阅读跳过顶部。这是我的控制器签名:

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

2 个答案:

答案 0 :(得分:0)

以下查询字符串

%24skip=0&%24top=25

将在Request.QueryString中使用以下密钥提供:$skip$top。您将无法将控制器参数名称更改为$skip$top,因为您将在Visual Studio中收到错误并且无法编译,因此您可以删除{skip 1}}和top参数,并从控制器中的%24skip获取%24topRequest.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

答案 1 :(得分:0)

这是我在获取QueryString后添加的代码:

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

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

在我的情况下,参数跳过顶部