Отправка двойных значений широты и долготы в контроллер MVC, но получение нулевых значений

Я жестко закодировал значения широты и долготы, но все еще получаю нулевые значения в контроллере, я пробовал много решений, но не смог заставить его работать. Я думаю, что существует несоответствие между моим объектом 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>

В контроллерах

[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 ответа

  1. Не строжируйте данные JSON. В этот момент Вы публикуете строку, а не JSON или набор пар имя-значение. MVC пытается связать саму строку Tableи, конечно, не удается, потому что нет преобразования из stringв Tableкласс. Вместо этого просто передайте dataсебя в качестве dataparam для вашего AJAX-запроса. Это также предполагает, что объект JavaScript, представленный dataзеркалом вашего Tableкласса C#. В противном случае у вас все еще будут проблемы с привязкой. Другими словами , если ваш Tableкласс имеет свойствоLatitude, то ваш объект JavaScript должен иметь член с именем Latitudeили latitude(оболочка не имеет значения).

  2. Спасибо за помощь @Chris Pratt, я наконец нашел решение. я вызывал функцию SaveMarker из формы, поэтому функция не считывала значения широты и долготы. Теперь я получаю значения lat lng в отдельной функции с помощью отдельного вызова ajax, теперь все работает гладко:).