小编典典

ASP.NET MVC是否可以将具有动态类型参数的参数的JSON对象传递给控制器​​?

ajax

我的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?

谢谢


阅读 324

收藏
2020-07-26

共1个答案

小编典典

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

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

幸运的是,本文:使MVC 3更加……动态正在处理完全相同的问题,因此您还可以在此处找到示例代码和其他链接,这些内容应该可以帮助您入门。

2020-07-26