C# 将System.Data.Entity.Spatial.DbGeography绑定到MVC模型

C# 将System.Data.Entity.Spatial.DbGeography绑定到MVC模型,c#,asp.net-mvc,razor,dbgeography,C#,Asp.net Mvc,Razor,Dbgeography,我有一个带有DBGeometry字段的MVC模型 [Required(AllowEmptyStrings = false, ErrorMessage = "Location is required")] public System.Data.Entity.Spatial.DbGeography LocationGps { get; set; } // LocationGPS 在我的视图中,我有这个隐藏的值 @Html.HiddenFor(model => model.L

我有一个带有DBGeometry字段的MVC模型

    [Required(AllowEmptyStrings = false, ErrorMessage = "Location is required")]
    public System.Data.Entity.Spatial.DbGeography LocationGps { get; set; } // LocationGPS
在我的视图中,我有这个隐藏的值

 @Html.HiddenFor(model => model.LocationGps)
 @Html.HiddenFor(model => model.Lat)
 @Html.HiddenFor(model => model.Lng)
编辑模型时,我将以下内容写入控制器

   model.LocationGps = Utils.Geography.ConvertLatLonToDbGeography(model.Lng, model.Lat);
  if (ModelState.IsValid)
  {}
ConvertLatLonToDBG地理代码:

   public static DbGeography ConvertLatLonToDbGeography(double longitude, double latitude)
    {
        var point = string.Format("POINT({1} {0})", latitude, longitude);
        return DbGeography.FromText(point);
    }
但是ModelState始终无效,因为LocationGps为空。如何通过视图正确设置LocationGps参数的值?
其目的是拥有一张谷歌地图,从javascript获取坐标(存储在Lat和Lng字段中),然后正确设置我的位置GPS。我该怎么做?

我的问题通过以下步骤解决:

  • 在我的模型中添加JSonConverter(找到JSonConverter)

  • 序列化我的数据表(服务器端)

  • 调用JSON.parse(客户端),因为我的dataSrc除了结果列表之外还有其他值

       "ajax":
                {
                    "url": "@string.Format("{0}",Url.Content("~/Location/AjaxGetLocations"))",
                    "type": "POST",
                    "dataSrc": function (data) {
                        var json = JSON.parse(data);
                        return json["data"];
                    }
                },
      "columns": [
                { "data": "LocationID", "orderable": false, "visible": false },
                { "data": "LocationInternalCode", "orderable": false },
                { "data": "LocationName", "orderable": false },
        etc....
    
    我发布它是为了节省时间。非常失望,没有人再次回答我的问题

  • string json = JsonConvert.SerializeObject(dataTableData);
    return Json(json, JsonRequestBehavior.AllowGet);
    
       "ajax":
                {
                    "url": "@string.Format("{0}",Url.Content("~/Location/AjaxGetLocations"))",
                    "type": "POST",
                    "dataSrc": function (data) {
                        var json = JSON.parse(data);
                        return json["data"];
                    }
                },
      "columns": [
                { "data": "LocationID", "orderable": false, "visible": false },
                { "data": "LocationInternalCode", "orderable": false },
                { "data": "LocationName", "orderable": false },
        etc....