asp.net-mvc – ASP.Net MVC:发送JSON到控制器
在ASP.Net MVC中发布给我的控制器时,我想要发送
JSON,而不是标准的QueryStrings.我有前端的东西工作正常(建立然后提交我的JSON对象).
问题出在控制器方面,MVC框架附带的默认ModelBinders不支持这一点. 我已经看到了一些方法,其中之一是应用一个将对象作为参数的过滤器,使用JSON库对其进行序列化,并将其添加到操作参数中.这不是理想的 另一个更好的方法是使用自定义的模型粘合剂.我所看到的所有这些都假设你将只有一个模型,它将是一个类而不是一个变量.如果你有多个它会分解. 有没有人遇到过这个?我有一个想法是,如果我可以简单地覆盖MVC如何处理FormCollection并在那里截取,将值添加到自己的集合中,并希望MVC能够以正常的方式执行其余操作.有人知道这是否可行? 我认为的关键问题是,我的问题并不具有约束力,因为我的观点模型与之前的方式没有什么不同.问题是从JSON Post获取值. 如果我是正确的MVC get是QueryString中的值,并将其放入表单集合中,然后将其用于ModelBinding.那么正确的方法是不是要改变FormCollection的分配方式呢? 举例说明: public ActionResult MyFirstAction(Int32 ID,PersonObject Person,ClassObject ClassDetails) { //etc } 正常的绑定工作,JSON并不是所有的模型绑定器的例子也不会工作.到目前为止,我的最佳解决方案是将对象转换为字典,并循环遍历每个参数并进行匹配.似乎不理想 解决方法
我使用json这样的自定义模型binder:
public class JsonModelBinder<T> : IModelBinder { private string key; public JsonModelBinder(string requestKey) { this.key = requestKey; } public object BindModel(ControllerContext controllerContext,...) { var json = controllerContext.HttpContext.Request[key]; return new JsonSerializer().Deserialize<T>(json); } } 然后将它连接在Global.asax.cs中,如下所示: ModelBinders.Binders.Add( typeof(Product),new JsonModelBinder<Product>("ProductJson")); 您可以在这里阅读更多:Inheritance is Evil: The Epic Fail of the DataAnnotationsModelBinder 编辑 控制器操作参数JsonModelBinder应该用作“仅产品”. Int32和ClassObject应该回到DefaultModelBinder.你有不同的结果吗? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – 找不到ID为“xxx”的UpdatePanel.如果它正在动态
- asp.net-mvc – 查看模型IEnumerable <>属性返回null(不绑
- asp.net – 我在哪里可以找到丢失的.aspx.vb文件的副本?
- asp.net-mvc – 如何让ASP.NET MVC遵守我的customErrors设置
- asp.net-mvc – 如何防止在DataBase First Model中删除Data
- 【4】Asp.Net Core2.2中间件多扩展对应应用
- asp.net-mvc – [HttpPost] public ActionResult Create(Fo
- 使用StructureMap的Asp.Net MVC 5自定义操作过滤器
- 为什么我不能在我的代码asp.net c#中使用app_code中的代码文
- asp.net-mvc – 使用具有Razor视图的Spark主布局
- 获取ASP.Net 2.0 Repeater控件中的当前索引
- asp.net-mvc – 我的MVC 5 Identity 2项目中没有
- asp.net – 从Web应用程序中查找网站名称
- asp.net – iis7中的windows身份验证
- asp.net – 什么Request.Params [“key”]呢?
- asp.net-web-api – 在身份验证过滤器中的Challe
- 点击图片,AJAX删除后台图片文件的实现代码(asp.n
- 如何将旧版ASP应用程序转换为ASP.NET?
- asp.net-mvc – 什么是HtmlHelper渲染htmlAttrib
- asp.net – 为CKEditor指定自定义配置文件