ASP.Net Формат валюты Десятичная Сериализация пост-модели Ajax - PullRequest
0 голосов
/ 15 октября 2018

Я храню валюту с типом данных decimal.

public decimal money { get; set; }

Я хочу отобразить это со знаком "£".поэтому я использую

[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:c}")]

Это прекрасно работает.Значение отображается в таблице и сериализуется с использованием jQuery.

@Html.EditorFor(model => model.money, "Currency")

После того, как информация сериализована, я создаю сообщение ajax, чтобы получить информацию обратно в мой ActionResult.

Data = $('#container :input').serialize();

public PartialViewResult EditedValue(MoneyModel viewModel)
{
        return PartialView("_MoneyView", viewModel);
}

Этот объект MoneyModel содержит десятичные деньги.ПРОБЛЕМА, деньги преобразуются в строку в представлении и при сериализации остаются в виде строки.Это не может быть приведено к десятичной дроби в MoneyModel.

Как мне решить эту проблему?Я хотел бы оставить «£» и «,» для отформатированной валюты «£ 1000», но не хочу конвертировать десятичные деньги -> строковые деньги в MoneyModel.

1 Ответ

0 голосов
/ 15 октября 2018

Просто отправьте входное значение так:

$.ajax({
  type: 'POST',
  contentType: "application/json; charset=utf-8",
  url: 'yoururl',
  data: {val: $('#container :input').val()},
  success: function (data) {  
     // do stuff  
  },
});
...