Является ли культура System.Web.Mvc.JsonValueProviderFactory определенной? - PullRequest
1 голос
/ 16 сентября 2011

Похоже, что JsonValueProviderFactory (из Microsoft.Web.Mvc), который я использую в своем проекте ASP.NET MVC2, зависит от конкретной культуры.

Я отправляю этот 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 Ответ

1 голос
/ 18 сентября 2011

Если свойство weight должно быть двойным, отправьте его как таковое, а не как строку:

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);
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...