Иногда решение проблемы привязки оставляет меня в таком же замешательстве.
Например, вот моя функция OnPost:
Код: Выделить всё
public async Task OnPostSaveFXRateAsync(Fxrates fxRate)
{
fxRate.LastUpdatedBy = User.Identity.Name;
bool isSuccess = await AL.SaveAndLogEntityAsync(fxRate, Constants.Audit_Module_ControlCenter, User.Identity.Name);
return new JsonResult(new { success = isSuccess });
}
Код: Выделить всё
onClickSave = (e) =>
{
let fxDate = $('#FXRate_Fxdate').data('kendoDatePicker').value();
let formData =
{
Id: parseInt($('#FXRate_Id').val()),
Fxdate: fxDate?.toYYYYMMDD(),
FiscalPeriodTypeId: $('#FXRate_FiscalPeriodTypeId').val(),
FromCurrencyId: $('#FXRate_FromCurrencyId').val(),
ToCurrencyId: $('#FXRate_ToCurrencyId').val(),
Fxrate: parseFloat($('#FXRate_Fxrate').val())
};
console.log(formData);
let validator = $('#frmFXRate').kendoValidator().data('kendoValidator');
console.log(validator);
if (validator.validate())
{
$.ajax({
type: 'POST',
url: '/Admin/ControlCenter/FXRateDetails?handler=SaveFXRate',
data: formData,
content: 'application/json; charset=utf-8',
headers: { 'RequestVerificationToken': $("input[name='__RequestVerificationToken']").val() },
success: function (response)
{
console.log('save successful');
window.parent.$('#FXRatesGrid').data('kendoGrid').dataSource.read();
window.parent.$("#DetailsWnd").data("kendoWindow").close();
},
error: function (xhr, textStatus, errorThrown)
{
console.log('Save failed');
}
});
}
else
{
console.log('Form data invalid');
}
}
Исправление, благодаря которому привязка работала, заключалось в том, чтобы обернуть отдельные поля formData в объект с тем же именем, что и параметр OnPost. вот так:
Код: Выделить всё
let formData =
{
fxRate: {
Id: parseInt($('#FXRate_Id').val()),
Fxdate: fxDate?.toYYYYMMDD(),
FiscalPeriodTypeId: $('#FXRate_FiscalPeriodTypeId').val(),
FromCurrencyId: $('#FXRate_FromCurrencyId').val(),
ToCurrencyId: $('#FXRate_ToCurrencyId').val(),
Fxrate: parseFloat($('#FXRate_Fxrate').val())
}
};
Для завершения, вот класс Fxrates (класс структуры сущности):
публичный частичный класс Fxrates
{
public int Id { get; набор;
Код: Выделить всё
public DateTime Fxdate { get; set; }
public string FiscalPeriodTypeId { get; set; }
public string FromCurrencyId { get; set; }
public string ToCurrencyId { get; set; }
public decimal Fxrate { get; set; }
public DateTime CreatedDate { get; set; }
public DateTime LastUpdatedDate { get; set; }
public string LastUpdatedBy { get; set; }
public virtual FiscalPeriodType FiscalPeriodType { get; set; }
public virtual Currency FromCurrency { get; set; }
public virtual User LastUpdatedByNavigation { get; set; }
public virtual Currency ToCurrency { get; set; }
Подробнее здесь: https://stackoverflow.com/questions/785 ... nd-if-so-h