2014-11-11 2 views
1

У меня есть форма, где данные отправляются в конечную точку веб-API. Форма имеет два поля ввода: один для текста и один для числа.double с запятой seperator не работает в привязке

На стороне Web API, мой объект настроен как например:

public class Course 
{ 
    public string Title { get; set } 
    public double? Price { get; set; } 
} 

Когда я посылаю значение "25,3" для Price, я получаю следующее сообщение об ошибке:

The value '25,3' is not valid for Price.

Отправка значения «25,3» работает нормально.

Я отправляю форму, используя сериализацию формы jQuery.

+0

Является ли ошибка на стороне клиента или на стороне сервера? –

+0

Я сделал переопределение OnActionExecuting, чтобы проверить, была ли модель действительной. Здесь я вижу ошибку: значение «25, 3» недействительно для Price. Итак, чтобы ответить на короткий вопрос :) –

+0

Как вы анализируете входящее значение? –

ответ

0

Вы можете указать культуру на сервере в web.config, согласно this answer. Вам нужно будет настроить свою культуру на та, которая использует запятые для обозначения фракций (например, fr-CA).

Если вы хотите, чтобы иметь возможность принимать как . и , в качестве разделителей, вам нужно будет установить Price как string, а затем разобрать значение самостоятельно.

+0

Поэтому я попытался изменить культуру для форматирования json, и он работает. Но если я отправляю $ («someform»). Сериализуем как данные, он не использует сериализатор json, а вместо этого является сериализатором FormUrlEncodedFormatter. Так что это все равно сбой –

+0

Изменение культуры происходит на стороне сервера (в файле web.config). Пока значение нажимает на сервер как «23,5», синтаксический анализатор на веб-api должен забрать изменение. –

+0

В настоящее время я установил культуру в сериализаторе json formatter. Попробовал установить его в конфиге, но вам нужно продолжить тестирование. Кажется, он не делает то же самое с настройками культуры. –

Смежные вопросы