mvc3 Json绑定模型

xiaofan_sap 2013-08-02 11:29:34
直接贴代码了:
实现IModelBinder接口:

public class JsonModelBinder:IModelBinder
{
public object BindModel(ControllerContext controllerContext,ModelBindingContext modelBindingContext)
{
if(controllerContext==null)
{
throw new ArgumentException("controllerContext");
}
if(modelBindingContext==null)
{
throw new ArgumentException("modelBindingContext");
}

var serialize = new DataContractJsonSerializer(modelBindingContext.ModelType);
return serialize.ReadObject(controllerContext.HttpContext.Request.InputStream);
}
}


自定义模型:

[ModelBinder(typeof(JsonModelBinder))]
public class JsonAccountRequest
{
public int Id { get; set; }
public string Name { get; set; }
}



前端页面:

<script type="text/javascript" src="../../Scripts/jquery-1.4.4.js"></script>
<h2>Index</h2>
@using(Html.BeginForm())
{
<input type="text" name="Id" />
<input type="text" name="Name" />
<input type="submit" value="Submit" />
}

<script type="text/javascript" src="../../Scripts/json2.js"></script>
<script type="text/javascript">
$(function () {
var jsonData = JSON.stringify({
"Id": 1,
"Name": "fxp"
});
$.ajax({
url: "/Account/FetchAccountInfoBy",
type:"POST",
dataType: "json",
data:jsonData,
contentType: "application/json;charset=utf-8",
success: function(data) {
alert(data);
}

});
})
</script>


调用的代码:


[HttpPost]
public JsonResult FetchAccountInfoBy(JsonAccountRequest model)
{
var item = model;

return Json("");
}


爆的异常:
应为来自命名空间“”的元素“root”。。遇到名称为“”、命名空间为“”的“None

请大家帮忙看看 怎么回事。

我的 json2.js是通过nuget直接下载的
...全文
278 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
akuaiyuan 2013-12-23
  • 打赏
  • 举报
回复
引用 4 楼 zhuankeshumo 的回复:
is it that you didn't reset your memory stream to the beginning, so it is trying to read from the end of the stream?http://social.msdn.microsoft.com/Forums/en-US/3c1b5738-9915-402f-8484-b84fa15684f6/serializationexception-using-json-serializer
正解!你需要对你的流的读取位置固定一下。ms.Position = 0;
newtee 2013-08-03
  • 打赏
  • 举报
回复
is it that you didn't reset your memory stream to the beginning, so it is trying to read from the end of the stream?http://social.msdn.microsoft.com/Forums/en-US/3c1b5738-9915-402f-8484-b84fa15684f6/serializationexception-using-json-serializer
newtee 2013-08-03
  • 打赏
  • 举报
回复
Justin-Liu 2013-08-03
  • 打赏
  • 举报
回复
信息的格式不对,你看看传入的东西有什么问题就行了啊,可能是你前台填的有问题
rayaspnet 2013-08-03
  • 打赏
  • 举报
回复
引用 楼主 xiaofan_sap 的回复:
爆的异常: 应为来自命名空间“”的元素“root”。。遇到名称为“”、命名空间为“”的“None 请大家帮忙看看 怎么回事。 我的 json2.js是通过nuget直接下载的
            return serialize.ReadObject(controllerContext.HttpContext.Request.InputStream); 这句出的异常? Call stack是什么
《Spring MVC 3.0实战指南》,参考《Spring 3.x企业应用开发实战》。 内容简介: 1、Spring MVC框架简介 2、HTTP请求地址映射 3、HTTP请求数据的绑定 4、数据转换、格式化、校验 5、数据模型控制 6、视图及解析器 7、其它 目录: Spring MVC 3.0新特性 Spring MVC框架结构 Spring MVC框架结构 框架的实现者 目录 HTTP请求映射原理 Spring MVC进行映射的依据 通过URL限定:URL表达式 通过URL限定:绑定{xxx}中的值 通过请求方法限定:请求方法 通过请求方法限定:代码示例 通过请求方法限定:模拟请求方法 通过请求/请求头参数限定:示例 通过请求/请求头参数限定:更多 目录 通过注解绑定:示意图 通过注解绑定:示例 通过注解绑定:小心抛出异常 使用命令/表单对象绑定 使用Servlet API对象作为入参 使用Spring的Servlet API代理类 使用IO对象作为入参 其他类型的参数 HttpMessageConverter HttpMessageConverter实现类 使用@RequestBody/@ResponseBody 使用HttpEntity/ResponseEntity 输出XML和JSON 使用HttpEntity/ResponseEntity 目录 数据绑定机理 数据类型转换 PropertyEditor依然有效 强大的ConversionService,让很多梦想成真 基于ConversionService体系,定义自定义的类型转换器 格式化:带格式字符串内部对象 相互转换 使用支持格式化的转换器 数据校验框架 JSR 303 数据校验框架 如何使用注解驱动的校验 使用校验功能时,处理方法要如何签名?? 校验错误信息存放在什么地方?? 页面如何显示错误信息 如何对错误信息进行国际化(1) 如何对错误信息进行国际化(2) 目录 数据模型访问结构 访问数据模型:ModelAndView 访问数据模型:@ModelAttribute 访问数据模型:Map及Model 访问数据模型:@SessionAttributes 一场由@SessionAttributes引发的血案... 如何避免@SessionAttributes引发的血案 目录 Spring MVC如何解析视图 视图解析器类型 基于协商的视图解析器 目录 本地化:基础原理 本地化:Spring MVC的本地化解析器 本地化:Spring MVC的本地化解析器 LocaleChangeInterceptor:通过URL参数指定 静态资源处理 静态资源处理:使REST风格的URL成为实现 静态资源处理:原理 静态资源处理:如何配置? 静态资源处理:如何配置? 物理静态资源路径映射逻辑资源路径 允许利用浏览器的缓存且不当心不同步
《Spring MVC 3.0实战指南》,参考《Spring 3.x企业应用开发实战》。 内容简介: 1、Spring MVC框架简介 2、HTTP请求地址映射 3、HTTP请求数据的绑定 4、数据转换、格式化、校验 5、数据模型控制 6、视图及解析器 7、其它 目录: Spring MVC 3.0新特性 Spring MVC框架结构 Spring MVC框架结构 框架的实现者 目录 HTTP请求映射原理 Spring MVC进行映射的依据 通过URL限定:URL表达式 通过URL限定:绑定{xxx}中的值 通过请求方法限定:请求方法 通过请求方法限定:代码示例 通过请求方法限定:模拟请求方法 通过请求/请求头参数限定:示例 通过请求/请求头参数限定:更多 目录 通过注解绑定:示意图 通过注解绑定:示例 通过注解绑定:小心抛出异常 使用命令/表单对象绑定 使用Servlet API对象作为入参 使用Spring的Servlet API代理类 使用IO对象作为入参 其他类型的参数 HttpMessageConverter HttpMessageConverter实现类 使用@RequestBody/@ResponseBody 使用HttpEntity/ResponseEntity 输出XML和JSON 使用HttpEntity/ResponseEntity 目录 数据绑定机理 数据类型转换 PropertyEditor依然有效 强大的ConversionService,让很多梦想成真 基于ConversionService体系,定义自定义的类型转换器 格式化:带格式字符串内部对象 相互转换 使用支持格式化的转换器 数据校验框架 JSR 303 数据校验框架 如何使用注解驱动的校验 使用校验功能时,处理方法要如何签名?? 校验错误信息存放在什么地方?? 页面如何显示错误信息 如何对错误信息进行国际化(1) 如何对错误信息进行国际化(2) 目录 数据模型访问结构 访问数据模型:ModelAndView 访问数据模型:@ModelAttribute 访问数据模型:Map及Model 访问数据模型:@SessionAttributes 一场由@SessionAttributes引发的血案... 如何避免@SessionAttributes引发的血案 目录 Spring MVC如何解析视图 视图解析器类型 基于协商的视图解析器 目录 本地化:基础原理 本地化:Spring MVC的本地化解析器 本地化:Spring MVC的本地化解析器 LocaleChangeInterceptor:通过URL参数指定 静态资源处理 静态资源处理:使REST风格的URL成为实现 静态资源处理:原理 静态资源处理:如何配置? 静态资源处理:如何配置? 物理静态资源路径映射逻辑资源路径 允许利用浏览器的缓存且不当心不同步 AQ?

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧