【问题标题】:asp.net mvc action method post data except as json dataasp.net mvc 操作方法发布数据,除了 json 数据
【发布时间】:2013-12-04 14:03:07
【问题描述】:

我有一个名为 Parcel 的模型类。该包裹包含NameCenterPoint参数:

public class Parcel
{
    public string Name { get; set; }
    public object CenterPoint { get; set; }
}

我正在从地图中获取这些参数。当我单击一个宗地中心点时,计算并设置在 javascript 中的变量中。 CenterPoint 是一个 json 对象。 名称是纯文本数据。

我想将 CenterPoint 保存为数据库中的 Json 对象。当我在地图上再次获得 CenterPoint 时,我可以绘制它。

当我将数据发布到如下操作方法时,我的 CenterPoint 对象就像这样 {object}.

其实应该是这样的:{ type="point", x=121.32380004076, y=452.024614968}

    [HttpPost]
    public ActionResult SaveParcel(Parcel parcel)
    {
        return Json(new {parcel}, JsonRequestBehavior.AllowGet);
    }

我的 javascript 笑话在这里:

           var postata = {
                    "Name": document.getElementById("name").value,
                    "CenterPoint": document.getElementById("center").value
            };

            $http({
                method: 'POST',
                url: "/Parcel/SaveParcel/",
                data: postata,
            }).success(function (data, status, headers, config) {
                console.log(data);
            });

我怎样才能像原来一样保存和获取 JSON。或者有什么好办法通行?

【问题讨论】:

    标签: javascript asp.net-mvc json


    【解决方案1】:

    我认为问题是...... JSON 反序列化器会将您的 Point 转换为匿名类(将其放在通用的 Object 属性中)吗? AFAIK no:请参阅this post 了解详细信息(如果您真的需要,请提供手工解决方案)。

    我会定义一个Location 类:

    public class Location
    {
        public type { get; set; }
        public float x { get; set; }
        public float y { get; set; }
    }
    

    然后将Parcel改为:

    public class Parcel
    {
        public string Name { get; set; }
        public Location CenterPoint { get; set; }
    }
    

    请注意“...在通用Object 属性中...”。反序列化器不会这样做,但 Json.NET 会做你需要的 dynamic 对象然后你可以将你的 Parcel 类重写为:

    public class Parcel
    {
        public string Name { get; set; }
        public dynamic CenterPoint { get; set; }
    }
    

    【讨论】:

    • 我认为这是可能的
    • @bookmarker 不是对象。如果您不想使其成为强类型,则可以使用 dynamic 代替。请参阅更新后的两个参考资料。
    猜你喜欢
    • 2013-03-16
    • 1970-01-01
    • 2019-03-30
    • 2012-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-26
    • 2017-07-22
    相关资源
    最近更新 更多