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

mar*_*ela 5 ajax jquery json c#-4.0 asp.net-mvc-3

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

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

                },
                error: function () {
                    alert('error');
                }
            });
Run Code Online (Sandbox Code Playgroud)

在控制器中,我有一个带签名的方法:

public JsonResult GetSelectedPageTranslation(int inttype, dynamic objectType)
Run Code Online (Sandbox Code Playgroud)

我可以正确地使用inttype.但是objectType不会为null,但如果我喜欢objectType.prop1,它将抛出错误.如果我将JSON.stringify javascript中的对象类型,控制器中的objectType将具有字符串值.

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

谢谢

nem*_*esv 5

dynamicMVC3 中没有开箱即用的动作参数支持.

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

幸运的是,这篇文章:制作MVC 3多一点...动态是处理完全相同的问题,所以你还可以找到示例代码和其他链接也应该帮助你开始.