asp.net mvc动作方法发布数据除了作为json数据

时间:2013-12-04 14:03:08

标签: javascript asp.net-mvc json

我有一个名为Parcel的模型类。此宗地包括名称 CenterPoint 参数:

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

我从地图中获取theese参数。当我点击一个包裹中心点时,计算并在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 jode在这里:

           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作为orginally。或者有一种好的方法可以通过吗?

1 个答案:

答案 0 :(得分:0)

我认为问题是......将JSON反序列化器将您的Point转换为匿名类(将其置于通用Object属性中)? AFAIK号:详情请见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; }
}