C# 是";“过滤器”;Angular、Javascript或ASP.NETMVC中的保留字?
我从使用angularJS的服务调用ASP.Net MVC控制器: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)
$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)