2011-03-17 59 views
1

我允许JsonValueProviderFactory填充我的控制器操作的参数。其中一个参数是Cat的数组。 这可行,但有时只有一个Cat它不会作为数组传入,参数只是Cat。我正在使用ExtJs,它处理所有客户端。ASP.Net MVC 3 JsonValueProviderFactory问题与接受数组参数的控制器方法

有没有办法处理这个服务器端?或者我需要破解ExtJs的请求,强制它始终发送一个数组?

[HttpPost] 
    public ActionResult Edit(int id, IEnumerable<Cat> Data){...} 

回答

1

一个适当的JSON请求应该是这样的,如果你有一个单一的猫:

{ 'id': '123', 'Data': [ { 'Name': 'Felix', 'Age': 6 } ] } 

和多个猫:

{ 'id': '123', 'Data': [ { 'Name': 'Felix', 'Age': 6 }, { 'Name': 'Morgan', 'Age': 2 } ] } 
0

MVC尝试的Cat到这一点,的Cat一个实例,而不是IEnumerable的单个实例绑定。通过阵列。

如果你要处理它的服务器端,你总是可以:

List<Cat> cats = new List<Cat>; 
cats.Add(argCat); 
... 

由于控制器参数是IEnumerable的,似乎你反正期待的一组数据。如果它具有商业意义,也许可以考虑单个实例的单独控制器操作。