![](/img/trans.png)
[英]Peta Poco and System.Data.Entity.Spatial.DbGeography
[英]Bind System.Data.Entity.Spatial.DbGeography to MVC Model
我有一個帶有 DBGeometry 字段的 MVC model
[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 時,我將以下內容寫入我的 Controller
model.LocationGps = Utils.Geography.ConvertLatLonToDbGeography(model.Lng, model.Lat);
if (ModelState.IsValid)
{}
ConvertLatLonToDbGeography 代碼:
public static DbGeography ConvertLatLonToDbGeography(double longitude, double latitude)
{
var point = string.Format("POINT({1} {0})", latitude, longitude);
return DbGeography.FromText(point);
}
但是 ModelState 總是無效的,因為 LocationGps 是 null。 如何通過我的視圖為我的 LocationGps 參數設置正確的值? 概念是擁有一個谷歌 map,從 javascript 獲取坐標(存儲在 Lat 和 Lng 字段中),然后正確設置我的 LocationGps。 我怎樣才能做到這一點?
我的問題通過以下步驟解決:
在我的 Model 中添加一個 JSONConverter(JsonConverter found here )
[JsonConverter(typeof(DbGeographyConverter))] [Required] public System.Data.Entity.Spatial.DbGeography LocationGps { get; set; }
序列化我的數據表(服務器端)
string json = JsonConvert.SerializeObject(dataTableData); return Json(json, JsonRequestBehavior.AllowGet);
稱為 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....
我發布它以節省時間。 非常失望,沒有人再次回答我的問題......
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.