JSON请求尝试通过使用linq传入数组来检索数据失败

时间:2014-09-02 18:51:00

标签: c# .net asp.net-mvc json controller

我正在研究MVC 5应用程序。我在控制器中有一个方法,它接受5个参数,其中一个是整数数组。此数组将用于根据db中包含的值从db中检索特定信息。

控制器方法的代码如下所示:

public JsonResult varyByStudyPeriod(int buildingId, int baselineLocationId, int baselineStandardId, int baselinePeriod, int [] altPeriod)
    {
        var data = from r in db.ResidentialDatas
                   where r.BuildingId == buildingId
                   && r.LocationId == baselineLocationId
                   && r.StandardId == baselineStandardId
                   && r.Year == baselinePeriod
                   //&& altPeriod.Contains(r.Year)
                   select new { r.LCC, r.Year };

        return Json(data, JsonRequestBehavior.AllowGet);

    }

年份只是数据库中从1到40的整数。

但是,注释行是Json请求失败的地方。是否有可能引导我朝着正确的方向前进?

JSON请求的url如下所示。格式似乎是问题,因为该方法不检索所请求的信息。

/ResidentialBuilding/varyByStudyPeriod?buildingId=1&baselineLocationId=1
    &baselineStandardId=1&baselinePeriod=1&**altPeriod=2,3**

1 个答案:

答案 0 :(得分:1)

您的查询参数未以默认模型绑定器可以理解的形式提供altPeriod。如果您无法更改调用者正在使用的格式,您可以将altPeriod参数类型更改为string,然后自己将其拆分为整数。如果你可以更改调用者,你可以改变它构建查询字符串的方式,使它看起来像这样:

?buildingId=1&baselineLocationId=1&baselineStandardId=1&baselinePeriod=1&altPeriod=2&altPeriod=3
                                                                                    ^^^^^^^^^^^^

altPeriod参数的重复将告诉模型绑定器所有这些值都属于一起,它们都会在数组中结束。