在jQuery和MVC Controller Actions之间传递非结构化JSON

关于MVC模型绑定有很多有用的信息。 我的问题源于这样一个事实:我试图避免在我的MVC应用程序中创建强类型数据,因为它主要需要充当数据路由器。

基本上,我在页面上有一组字段,有一个类’input’,我可以用jQuery('.input')收集,迭代并填充到javascript对象中。 然后我将它发送到我的ASP.NET MVC控制器:

 var inputData = my_serialize( $('input'); $.ajax({ type:'POST', url: '/acme/Ajax/CaptureInput', dataType: "json", data: { inputData: JSON.stringify(inputData) }, success: Page_Response_RegisterAndDeposit, error: Page_AjaxError }); 

在C#方面,我有

 public JsonResult CaptureInput(string inputDataAsJsonString) { JavaScriptSerializer JSON = new JavaScriptSerializer(); object inputData = JSON.DeserializeObject(inputDataAsJsonString); 

这似乎是一个浪费的间接层,我更喜欢将数据作为contentType:application / json传递,并让CaptureInput接受一个objectIDictionary甚至dynamic

您可以使用serializeArray方法。 假设您有一个包含可以是任何类型的输入元素的表单,并且您想要调用以下控制器操作:

 public ActionResult CaptureInput(Dictionary values) { ... } 

这是你如何进行:

  

不完全是你想要的,但也许这个问题的解决方案会给你一个部分的解决方法,允许你绑定到一个带有嵌入式Dictionary的简单包装器对象。 它甚至可以允许直接绑定到Dictionary。 不确定…您可能还需要在$ .ajax调用中显式设置json ContentType标头

“ASP.NET MVC / WebAPI中IDictionary <>的JSON模型绑定”