将纬度和经度双值发送到MVC控制器但获取NULL值

时间:2016-05-26 15:06:02

标签: javascript c# jquery google-maps asp.net-mvc-4

我已经硬编码了纬度和经度值,但我仍然在控制器中获得空值,我尝试了很多解决方案,但无法使其工作。我认为我的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;
&#13;
&#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; }
}

2 个答案:

答案 0 :(得分:0)

不要对JSON数据进行字符串化。您在该点发布了一个字符串,而不是JSON或一组名称 - 值对。 MVC尝试将字符串本身绑定为Table,当然也会失败,因为没有stringTable类的转换。相反,只需将data本身作为AJAX请求的data参数传递。这也假设data表示的JavaScript对象反映了您的C#Table类。否则,您仍然会遇到绑定问题。换句话说,如果您的Table类具有属性Latitude,那么您的JavaScript对象需要有一个名为Latitudelatitude的成员(大小写无关紧要)

答案 1 :(得分:0)

感谢@Chris Pratt的帮助,我终于找到了解决方案。我从一个表单调用函数SaveMarker,这就是函数没有读取纬度和经度值的原因。现在我使用单独的ajax调用在单独的函数中获取lat lng值,现在一切都很顺利:)。

相关问题