C# 是";“过滤器”;Angular、Javascript或ASP.NETMVC中的保留字?

C# 是";“过滤器”;Angular、Javascript或ASP.NETMVC中的保留字?,c#,javascript,ajax,asp.net-mvc,angularjs,C#,Javascript,Ajax,Asp.net Mvc,Angularjs,我从使用angularJS的服务调用ASP.Net MVC控制器: $http({ method: "get", url: "ControllerMethod", params: { param1: param1Value, pageNumber: pageNumber, pageSize: pageSize, filter: filter } }).success(function (data)

我从使用angularJS的服务调用ASP.Net MVC控制器:

$http({
    method: "get",
    url: "ControllerMethod",
    params: {
        param1: param1Value,
        pageNumber:  pageNumber,
        pageSize: pageSize,
        filter: filter
    }
}).success(function (data) {
    callback(data);
}).error(function () {
    alert("Error.");
});
控制器签名为:

public ActionResult GetAssetDepreciationList(
     int pageNumber, int pageSize, int param1, MyFilterType filter)
如图所示运行时,“filter”参数始终以null形式到达。我有许多类似的方法,都可以毫无问题地工作

当我改变时:

 filter: filter
致:


它像预期的那样工作。“过滤器”是保留字吗?如果是这样,对于哪个框架(MVC、Javascript或angular)?

看起来您的过滤器是复杂类型的
MyFilterType
看看

您可能需要创建一个自定义解析器。如果希望避免这种情况,还可以保留模型(即如果MyFilterType是POCO),并将过滤器(作为JSON)与请求体一起传递

此外,如果你的过滤器是如此复杂,我会建议奥达塔。由于您已经在使用.NET,它是一个简单的Nuget包,可以进行查询,它的标准化和解析器已经存在,而且它是可配置的,可以直接应用于IQueryable

一些更有用的信息可能是。。什么是
MyFilterType
,以及
:filter
中的实际数据是什么

更新: 有趣的问题,我认为它和查询字符串和模型解析有关。。。我能让它通过。。。以下内容:(需要
System.Web.Http

并将过滤器的各个参数名称展平到参数上,以便

params: angular.extend({
                           param1: paramValue,
                           pageNumber: pageNumber,
                           pageSize: pageSize,
                        },filter)

我假设
var-filter={paramA:1,paramB:2,paramC:3}

angular中有类似于
过滤器的东西:ngFilter不应该影响http。试着用小提琴捕捉它;在工作和非工作情况下,生成的GET URL是什么样子的?是的,我熟悉角度过滤。不应该像你说的那样干扰http。我将检查该请求。是否是另一个js库导致了该问题?我不认为是AngularJS或ASP.NETMVC或Javascript。在浏览器中打开控制台并键入
过滤器
。变量存在吗?嗯,请求的命名方式看起来都一样。这不能解释为什么我用一种方式命名参数会起作用,而用另一种方式命名则会失败。问题似乎在于参数的名称(在javascript http端)。因此,当您重命名时,您还将
MyFilterType filter
重命名为
MyFilterType anythingElse
,它可以工作吗?不,对不起,我的措辞很混乱。我只是在javascript端更改了它。当我在js端命名参数anythingElse时,filter是MyFilterType的一个实例。当我将其命名为“过滤器”时,它为空。MyFilterType只是一个具有三个整数属性的poco。。也许它没有解析查询字符串中的JSON。。。(幽默地告诉我,在
$http
config?)的
data
属性上尝试一下,例如,只需设置
data:filter
 public ActionResult GetAssetDepreciationList(
      int pageNumber, int pageSize, int param1, [FromUri] MyFilterType filter)
params: angular.extend({
                           param1: paramValue,
                           pageNumber: pageNumber,
                           pageSize: pageSize,
                        },filter)