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直接下载的
...全文
306 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用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是什么

62,243

社区成员

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

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

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

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