加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

Asp.Net MVC 3 JSON模型绑定无法正常工作

发布时间:2020-12-16 04:17:50 所属栏目:asp.Net 来源:网络整理
导读:我正在使用MVC3,我知道MVC3支持将 JSON文字绑定到Action参数.但我不能成功地做到; 我有一个班级名称Tag public class Tag{ public int tagId { get; set; } public string tagName { get; set; }} 控制器上的Action,名为Tag [HttpPost] public ActionResult
我正在使用MVC3,我知道MVC3支持将 JSON文字绑定到Action参数.但我不能成功地做到;

我有一个班级名称Tag

public class Tag
{
    public int tagId { get; set; }
    public string tagName { get; set; }
}

控制器上的Action,名为Tag

[HttpPost]
    public ActionResult Tag(Tag tag)
    {
        // Here will be codes...
        return Json(new { success = 0 });
    }

将js对象作为JSON发送到我的操作的Javascript代码

var tag ={tagId:5,tagName:"hello"};
    $.ajax({
           url: "/image/tag",type: "POST",data: $.toJSON(tag),success: function (r) {
               if (r.success == 1) {
                   window.location = r.redirect;
               }
           }

发布我在Firebug Net选项卡中看到的数据

{"tagId":5,"tagName":"hello"}

Tag Action中的参数名称标记不为null,但tagId的值为O,tagName的值为null.
这里有什么问题?

解决方法

您需要将请求的内容类型设置为application / json:
$.ajax({
    url: '/image/tag',type: 'POST',contentType: 'application/json; charset=utf-8',success: function (r) {
        if (r.success == 1) {
            window.location.href = r.redirect;
        }
    }
});

啊,你不需要让你的Tag模型属性以小写字母开头:

public class Tag
{
    public int TagId { get; set; }
    public string TagName { get; set; }
}

备注1:ASP.NET MVC 3在幕后使用的JavaScriptSerializer类能够正确处理它.

备注2:在你的Tag操作中,你似乎正在返回以下JSON:{“success”:0}而在你成功的AJAX回调中,你似乎正在使用一些不存在的r.redirect属性.

备注3:避免以与视图模型相同的方式命名控制器操作.通常,动作名称应表示动词(如List,Save,Delete,…),而视图模型表示资源(TagModel,…).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读