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更加…动态处理完全相同的问题,所以你也可以找到示例代码和其他链接,这些应该可以帮助你入门。