asp.net mvc操作方法发布除json数据之外的数据

asp.net mvc action method post data except as json data

本文关键字:数据 json net mvc 操作方法 asp      更新时间:2024-03-23

我有一个名为Parcel的模型类。该地块包括名称中心点参数:

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

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

我想在数据库中将CenterPoint保存为Json对象。当我在地图上再次找到CenterPoint时,我可以画出来

当我按如下方式将数据发布到操作方法时,我的CenterPoint对象如下所示

实际上应该是这样的:{type="point",x=121.3238004076,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保存和获取为原始格式。或者有没有一个好的方法可以通过?

我想问题是…JSON反序列化程序会将您的Point转换为匿名类(将其放入通用Object属性中)吗?AFAIK否:请参阅这篇文章了解详细信息(如果您真的需要,可以提供手工解决方案)。

我将定义一个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; }
}