2011-08-23 59 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) 
       { 
        ... 
       } 
      ); 

有没有任何选项如何禁用指定的控制器方法(特别是参数)的本地化格式,但仍然在视图中使用它们?

相关问题