2013-04-24 85 views
0

我有一个MVC .NET 4.5应用程序,使用带有JSON的Ajax请求来击中服务器端的MVC控制器。在控制器的功能如下:MVC控制器没有正确解析Ajax请求?

[HttpPost] 
public void SomeFunction(int int1, List<int> listOfInts, int int2) 
    { 
     someOtherFunction(int1, listOfInts, int2); 
    } 

和Ajax请求如下:

actionData = { 
      int1: 1, 
      int2: 2, 
      listOfInts: list 
     } 
$.ajax({ 
     type: 'POST', 
     url: actionURL, 
     data: JSON.stringify(actionData), 
     traditional: true, 
     dataType: "json", 
     contentType: "application/json; charset=utf-8", 
     success: functionIfSuccessful() }, 
     error: functionIfNotSuccessful() } 
    }); 

如果我看JSON ojbect传递的提琴手请求的格式是:

int1=1 
int2=2 
listOfInts=[1,2] 

问题是,当MVC控制器中的功能被击中,int1int2属性从请求正确设置,但listOfInts参数为空。我试图改变它使用一个原始数组而不是一个List对象,但这并没有改变任何东西。

+0

你有没有试过有一个类将包装int1,int2和listOfInts? – epignosisx 2013-04-24 20:15:06

+0

像DTO一样?我一直在考虑它。但还没有做到。如果可以的话,我想避免它,因为这是我的网站中唯一使用DTO的地方。我不想为单个请求创建一个。 – 2013-04-24 20:26:43

回答

0

固定。这个问题是由所提供的代码之外的东西造成的。构建整数列表的JavaScript不应该在方括号中添加括号。删除这些,它像一个魅力。