2011-08-23 73 views
0

我在使用ASP.net MVC中的AJAX控件時遇到問題。我有一個應用程序發送地理座標與AJAX到ASP.net MVC控制器。這些座標是雙倍的,但是當我以雙倍的形式發送它們時,控制器返回錯誤頁面。但是當我將座標作爲整數發送時,控制器會返回正確的結果。使用AJAX發送雙向ASP.net MVC控制器

錯誤:

The parameters dictionary contains a null entry for parameter 'latitude' of non-nullable type... 

這工作:

function() 
    { 
     $.post(url, 
       { 
        "latitude" : 28, 
        "longitude" : 64, 
        "distance" : 100 
       }, 
       function(data) 
       { 
        ... 
       } 
      ); 
    } 

這不是:

function() 
    { 
     $.post(url, 
       { 
        "latitude" : 28.457, 
        "longitude" : 64.574, 
        "distance" : 100 
       }, 
       function(data) 
       { 
        ... 
       } 
      ); 
    } 

的Controler:

[HttpPost] 
    public JsonResult GetPlaces(float latitude, float longitude, float distance) 
    { 
     /* data mining */ 
     return Json(jsonPlaces.ToList()); 
    } 
+0

我很高興能解決問題,我希望它爲你.. – c0demaster

回答

2

我認爲這是一個本地化的問題,所以你需要將值改爲逗號分隔,或者您需要聲明局部的MVC應用程序

這裏是點到逗號變化代碼

var lati = 2.24; 
var latitude = lati.replace (/\./g, ','); 

請也許試試這將解決

1

您在控制器中使用哪種數據類型? 我做了一些非常類似的事情,就像你正在嘗試,它確實有效。我正在使用.net 十進制數據類型。此外,確保您使用的實際上是同一個變量名(區分大小寫)

這是爲我工作的ASP.net MVC控制器代碼:

public ActionResult SaveColumn(string ID, decimal Value, string comment) 
{ 
    //... 
} 

這就是我在JavaScript中稱它:

$.ajax({ url: "SaveColumn?ID=" + id + "&Value="+val+"&comment="+comment, cache: false, success: function (data, textStat, jqXHR) { ... }}); 
+0

謝謝的,我試過小數類型也與雙倍同樣不好的影響。我會嘗試使用GET方法並在URL中發送數據。 – PavelKumpan

0

如果今天晚上有這個問題與DateTime。原來是一個本地化問題。我懷疑你的也是。例如,serverside期望5.5,但從客戶端收到5.5。

0

謝謝,這是一個定位問題,這個工程:

$.post(url, 
       { 
        "latitude" : "49,81", 
        "longitude" : "12,44", 
        "distance" : distance 
       }, 
       function(data) 
       { 
        ... 
       } 
      ); 

有沒有任何選項如何禁用指定的控制器方法(特別是參數)的本地化格式,但仍然在視圖中使用它們?

相關問題