使用AJAX向ASP.net MVC控制器发送两倍

时间:2011-08-23 20:45:33

标签: asp.net-mvc ajax

我在ASP.net MVC中遇到AJAX控制器问题。我有一个应用程序发送与AJAX的地理坐标到ASP.net MVC控制器。这些坐标是双倍的,但是当我将它们作为double发送时,控制器返回错误页面。但是当我将坐标作为整数发送时,控制器会返回正确的结果。

ERROR:

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());
    }

5 个答案:

答案 0 :(得分:2)

我认为这是一个本地化问题,因此您需要将值更改为逗号分隔,或者您需要在mvc应用程序上声明本地

这是逗号更改代码的点

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

请尝试它也许它会解决

答案 1 :(得分: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) { ... }});

答案 2 :(得分:0)

如果今晚与DateTime有这个问题。原来是本地化问题。我怀疑你的也是。例如,serverside期望5.5,但从客户端收到5,5。

答案 3 :(得分:0)

谢谢,这是一个本地化问题,这有效:

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

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

答案 4 :(得分:0)

我在Web.config中使用Globalization解决了同样的问题。

http://msdn.microsoft.com/en-us/library/hy4kkhe0.aspx