2012-07-23 81 views
4

我在JavaScript的有代码,AJAX发布数据:ASP.NET MVC可以将JSON对象传递给带有动态类型参数的参数的控制器吗?

$.ajax({ 
       url: '/Configurations/GetSelectedPageTranslation', 
       type: 'POST', 
       data: { inttype: $("#some").val(), objectType:{prop1: 'adsfa', prop2: 'asdf'}}, 
       success: function (result) { 

       }, 
       error: function() { 
        alert('error'); 
       } 
      }); 

在控制器上我有签名的方法:

public JsonResult GetSelectedPageTranslation(int inttype, dynamic objectType) 

我可以正确有IntType上。然而,objectType不会为空,但如果我喜欢objectType.prop1,它会抛出错误。如果我将JSON.stringify在JavaScript中的对象类型,控制器中的objectType将有一个字符串值。

难道这可以直接访问控制器中的JSON数据使用动态数据类型,如下所示:objectType.prop1?

感谢

回答

5

没有出在MVC3 dynamic动作参数的内置支持。

但是,MVC非常具有可扩展性,因此您可以添加此功能。您需要做的是创建一个自定义IModelBinder,您可以在其中执行JSON反序列化并构建一个动态对象。

幸运的是,这篇文章:Making MVC 3 a little more… dynamic是处理完全相同的问题,所以你还可以找到示例代码和其他链接也应该帮助你开始。

+0

对此答案+1。非常有帮助的感谢! – eadam 2013-09-05 02:03:12

相关问题