ASP.NET MVC可以使用带有动态类型参数的参数将JSON对象传递给控制器​​吗?

我的javascript代码,ajax发布数据:

$.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不会为null,但如果我喜欢objectType.prop1,它将抛出错误。 如果我将jSON.stringify javascript中的对象类型,控制器中的objectType将具有字符串值。

是否可以使用如下的动态数据类型直接访问控制器中的JSON数据:objectType.prop1?

谢谢

MVC3中没有开箱即用的dynamic动作参数支持。

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

幸运的是这篇文章: 使MVC 3更加…动态处理完全相同的问题,所以你也可以找到示例代码和其他链接,这些应该可以帮助你入门。