5

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

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

谢谢

4

1 回答 1

5

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

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

幸运的是,这篇文章:Making MVC 3 a little more...dynamic正在处理完全相同的问题,因此您还可以在那里找到示例代码和其他链接,它们应该可以帮助您入门。

于 2012-07-23T07:42:28.193 回答