【问题标题】:Sending Latitude and Longitude double values to MVC Controller but getting NULL values向 MVC 控制器发送纬度和经度双精度值但获取 NULL 值
【发布时间】:2016-05-26 15:06:02
【问题描述】:

我已经硬编码了纬度和经度值,但我仍然在控制器中得到空值,我尝试了很多解决方案但无法让它工作。我认为我的 javascript 对象“mydata”和我的 MVC 对象 Table 之间不匹配。

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>
在控制器中
[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; }
}

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 我没有对我的数据进行字符串化,你可以看到它已经被评论了,但我会尝试在我的 ajax 请求中将数据作为参数传递。
    • 我尝试将数据作为参数传递,但我仍然得到纬度、经度和徽标的空值。似乎只有我硬编码的那些 var 才给出空值。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-01
      • 1970-01-01
      • 2015-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-30
      • 1970-01-01
      相关资源
      最近更新 更多