我已经硬编码了纬度和经度值,但我仍然在控制器中获得空值,我尝试了很多解决方案,但无法使其工作。我认为我的javascript对象" mydata"之间存在不匹配。和我的MVC对象表。
Javascript代码
<script>
map.setContextMenu({
control: 'map',
options: [{
title: 'Click to add marker',
name: 'add_marker',
action: function (e) {
$("#markerform").show();
var latitude = 31.555;
var longitude = 74.333;
var m = $('#m').val();
var n = $('#n').val();
var o = $('#o').val();
var ad = $('#ad').val();
var ph = $('#ph').val();
var w = $('#w').val();
var fb = $('#fb').val();
var l = "RAO";
var mydata = {
lat: latitude,
lng: longitude,
marker: m,
name: n,
offer: o,
address: ad,
phn: ph,
website: w,
fbpage: fb,
logo: l
};
function SaveMarker() {
$.ajax({
type: 'POST',
data: mydata,
url: "/Home/AddMarker",
// dataType: 'json',
// data: JSON.stringify(data),
success: function () {
alert('suc');
},
error: function (args) {
alert('error');
}
});
}
}
}
]
});
</script>
&#13;
中
[HttpPost]
public ActionResult AddMarker(Table t){
//Some Code
return View("../Home/Index");
}
我的表类
public partial class Table
{
public int Id { get; set; }
public Nullable<double> lat { get; set; }
public Nullable<double> lng { get; set; }
public string marker { get; set; }
public string name { get; set; }
public string offer { get; set; }
public string address { get; set; }
public string phn { get; set; }
public string website { get; set; }
public string fbpage { get; set; }
public string logo { get; set; }
}
答案 0 :(得分:0)
不要对JSON数据进行字符串化。您在该点发布了一个字符串,而不是JSON或一组名称 - 值对。 MVC尝试将字符串本身绑定为Table
,当然也会失败,因为没有string
到Table
类的转换。相反,只需将data
本身作为AJAX请求的data
参数传递。这也假设data
表示的JavaScript对象反映了您的C#Table
类。否则,您仍然会遇到绑定问题。换句话说,如果您的Table
类具有属性Latitude
,那么您的JavaScript对象需要有一个名为Latitude
或latitude
的成员(大小写无关紧要)
答案 1 :(得分:0)
感谢@Chris Pratt的帮助,我终于找到了解决方案。我从一个表单调用函数SaveMarker,这就是函数没有读取纬度和经度值的原因。现在我使用单独的ajax调用在单独的函数中获取lat lng值,现在一切都很顺利:)。