Я понял, почему он так себя ведет. Во-первых, так выглядит моя модель:
public class someDTO
{
public int Id { get; set; }
public int AuftragId { get; set; }
public string Typ { get; set; }
public decimal KundeBrutto { get; set; }
public decimal KundeNetto { get; set; }
public decimal KundeMwSt { get; set; }
public decimal FahrerBrutto { get; set; }
public decimal FahrerNetto { get; set; }
public decimal FahrerMwSt { get; set; }
public decimal MwStSatz { get; set; } = (decimal)0.19;
public string MwStLand { get; set; } = "DE";
public string FileName { get; set; }
public string FileUrl { get; set; }
}
Очевидно, что некоторые из этих свойств имеют тип decimal
. Если я верну данные из GET, Asp. Net отправит обратно JSON с данными. Как упоминал Seabizkit, свойство типа decimal всегда отделяется точкой, поскольку оно является встроенным типом. Поэтому культура не имеет значения.
Мне было интересно, однако, почему я должен посылать данные с немецкой культурой? В соответствии с требованиями моего приложения, мне нужно отправить файл вместе с этими данными, поэтому мы решили сделать запрос типа form-data
. Недостаток данных формы в том, что все, что вы отправляете, будет иметь тип string и не будет иметь тип данных. Когда Asp. Net видит строку, он пытается отобразить это значение из строки в десятичную. При этом предполагается, что отправленная строка имеет формат культуры, применяемой к серверу. Например, в моем случае я установил на сервере язык «German», и поэтому значение, например «47,11», будет правильно отображаться на 47.11.
Однако, если вы решите отправить данные типа JSON внутрь ваше тело, вы, конечно, можете сделать эти свойства типа десятичными, и, следовательно, вы можете отправить их через точку. Таким образом вы преодолеете проблему отправки / получения данных в разных культурах:
Надеюсь, это имеет смысл!