System.Web.Mvc.JsonValueProviderFactory文化是否具体?

时间:2011-09-16 15:27:09

标签: asp.net-mvc-2 json

看起来我在ASP.NET MVC2项目中使用的JsonValueProviderFactory(来自Microsoft.Web.Mvc)是特定于文化的。

我从客户端发送此JSON:

{
   "name": "Max",
   "weight": "60.21" 
}

JsonValueProviderFactory将JSON转换为此类:

public class User
{
    public string Name { get; set; }
    public double Weight { get; set; }
}

如果我目前的文化是CultureInfo.InvariantCulture,那么一切正常。但如果我明确地将我的文化设置为“ru-RU”,则用户的权重值将为0.0

好的,我可以根据客户的重量文化发送格式化值,例如:

{
   "name": "Max",
   "weight": "1,100.21"    // it's just example, not my real weight :) 
}

但在这种情况下,JsonValueProviderFactory无法解析权重,它将为零,尽管double.Parse(“1,100.21”,CultureInfo.CurrentCulture)可以正常工作。

我如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

如果weight属性应该是double,请按原样发送,而不是字符串:

var model = {
   "name": "Max",
   "weight": 60.21
};

$.ajax({
    url: '@Url.Action("someAction")',
    type: 'POST',
    contentType: 'application/json',
    data: JSON.stringify(model),
    success: function (result) {
        alert(result);
    }
});