我的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?
谢谢
dynamicMVC3 中没有对动作参数的开箱即用支持。
dynamic
但是,MVC非常可扩展,因此您可以添加此功能。您需要做的是创建一个自定义IModelBinder,您可以在其中执行JSON反序列化并建立一个动态对象。
IModelBinder
幸运的是,本文:使MVC 3更加……动态正在处理完全相同的问题,因此您还可以在此处找到示例代码和其他链接,这些内容应该可以帮助您入门。