Tengo una llamada Ajax que tiene una lista de parámetros. Uno de ellos es una lista de objetos del Modelo. Tengo problemas para intentar preparar los datos para enviarlos al Controlador. Actualmente, es así:
const result = await $.ajax({
type: "POST",
url: "/PayrollAudit/SaveFundFindings",
data: {
'fundFindingsGridRows': DATA,
'revisionDateExists': @Model.revisionDateExists.ToString().ToLower(),
'rev': @Model.rev.ToString().ToLower(),
'deficiency': @Model.deficiency,
'principalAndInterest': @Model.principalAndInterest,
'newAudit': @Model.newAudit.ToString().ToLower(),
'auditStartDate': moment('@Model.auditStartDate').format('MM/DD/YYYY'),
'billingEntityFindingsTitle': '@Model.billingEntityFindingsTitle',
'delinquency20': @Model.delinquency20,
'billingEntityNo': '@Model.billingEntityNo',
'revisionSentToFundsDate': moment('@Model.revisionSentToFundsDate').format('MM/DD/YYYY'),
'V3FundOptions': @Model.V3FundOptions
}
});
Cuando se ejecuta esto, aparece el siguiente error en la consola de depuración del navegador:
Error de sintaxis no detectado: número inesperado (en PayrollAudit: 2617:66)
Así es como se ve el código en la consola:
Controlador:
public IActionResult SaveFundFindings(
List<FundFindingsGridRow> fundFindingsGridRows,
bool revisionDateExists,
bool rev,
bool settlement,
decimal deficiency,
decimal principalAndInterest,
bool newAudit,
DateTime auditStartDate,
string billingEntityFindingsTitle,
decimal delinquency20,
string billingEntityNo,
DateTime revisionSentToFundsDate,
List<FundOption> V3FundOptions
)
{
// Do things...
}
Clase FundOption:
public partial class FundOption
{
public string ClientCode { get; set; }
public string LvwColTitle { get; set; }
public int ColOrder { get; set; }
public string DbFieldName { get; set; }
}
Entiendo que usar @Model devolverá el nombre de la colección y no los objetos de la colección. Entonces, ¿qué debo hacer aquí para enviar correctamente estos datos al controlador?
Como sugirió @Heretic Monkey en los comentarios, debe serializar la lista en JSON. Agregue @using System.Text.Json en su vue y luego use @Html.Raw(Json.Serialize(Model.V3FundOptions)) :
const result = await $.ajax({
type: "POST",
url: "/PayrollAudit/SaveFundFindings",
data: {
'fundFindingsGridRows': DATA,
'revisionDateExists': @Model.revisionDateExists.ToString().ToLower(),
'rev': @Model.rev.ToString().ToLower(),
'deficiency': @Model.deficiency,
'principalAndInterest': @Model.principalAndInterest,
'newAudit': @Model.newAudit.ToString().ToLower(),
'auditStartDate': moment('@Model.auditStartDate').format('MM/DD/YYYY'),
'billingEntityFindingsTitle': '@Model.billingEntityFindingsTitle',
'delinquency20': @Model.delinquency20,
'billingEntityNo': '@Model.billingEntityNo',
'revisionSentToFundsDate': moment('@Model.revisionSentToFundsDate').format('MM/DD/YYYY'),
'V3FundOptions': @Html.Raw(Json.Serialize(Model.V3FundOptions))
}
});