У меня есть пользовательская модель связующий для десятичных знаков, которые содержат запятую, которая основана на этой статьи о Model Binding Decimal Valuesмодель связующий не привыкает для AJAX-запросы
Это работает отлично, за исключением, когда используются в Ajax запроса
Он отлично работает для запросов AJAX, которые не содержат сумму с запятой (т.е. значения меньше, чем тысяча)
ошибка
System.ArgumentException: The parameters dictionary contains a null entry for parameter 'amount'
of non-nullable type 'System.Decimal' for method
'System.Web.Mvc.JsonResult IsDepositRequired(System.String, System.String, System.String,
Boolean, System.Decimal, System.DateTime)' in 'Client.Controllers.DealingController'. An
optional parameter must be a reference type, a nullable type, or be declared as an
optional parameter.
Parameter name: parameters
at System.Web.Mvc.ActionDescriptor.
ExtractParameterFromDictionary(ParameterInfo parameterInfo, IDictionary`2 parameters, MethodInfo methodInfo)
модель связующий правильно зарегистрирован в golbal.asax
любая идея, что я мог бы пропустил благодаря
Аякса код:
$.post('/Dealing/IsDepositRequired', {
baseCurrency: deal.baseCurrency,
termsCurrency: deal.termsCurrency,
dealtCurrency: deal.dealtCurrency,
isBuy: deal.direction == 'BUY',
amount: deal.dealtCurrency == deal.baseCurrency ? deal.baseAmount : deal.termsAmount,
valueDate: deal.valueDate
}, function (show) {
if (show) {
$('.Deposit').fadeIn(500);
} else {
$('.Deposit').hide();
}
}, 'json');
Контроллер
[HttpPost]
public virtual JsonResult IsDepositRequired(string baseCurrency, string termsCurrency, string dealtCurrency, bool isBuy, decimal amount, DateTime valueDate)
{
Firebug Net Консоль:
amount 100,000.00
baseCurrency GBP
dealtCurrency GBP
isBuy true
termsCurrency EUR
valueDate 30/10/2012
Источник:
baseCurrency=GBP&termsCurrency=EUR&dealtCurrency=GBP&isBuy=true&amount=100%2C000.00&valueDate=30%2F10%2F2012
Используется модельное связующее - вы, вероятно, не правильно создаете свой запрос AJAX. Вы пытались использовать Fiddler или что-то в этом роде, чтобы увидеть фактический запрос? – Simon
Можете ли вы разместить свой код AJAX? –
Ive добавил код ajax выше – ChrisCa