¿Cómo renderizo un elemento de formulario parcial usando AJAX?
Tengo una forma que ensambla secciones de una forma más grande. Por ejemplo:
Html.RenderPartial("Partials/MealPreference", Model);
Me gustaría añadir dinámicamente secciones al formulario. Dada la naturaleza de mis vistas parciales, también debo pasar el modelo. En eso, estoy fallando miserablemente.
El marcado en mi página que contiene:
<div id="additionalPreference"></div>
<input type="button" value="Add Additional Preference" id="addPreference" />
<script>
$(document).ready(function () {
$('#addPreference').click(function () {
$.ajax({
type: "POST",
url: '@Html("AddPreference", "Main")',
success: function (html) {
$(html).appendTo('#additionalPreference');
console.log(html);
},
error: function (xhr, ajaxOptions, thrownError) {
alert("Error");
},
complete: function () {
console.log("End");
}
});
});
});
</script>
Mi controlador de acción:
[HttpPost]
public ActionResult AddPreference(FormViewModel model)
{
if (ModelState.IsValid)
{
return PartialView("Partials/AdditionalPreference", model);
}
else
{
return PartialView("Partials/LoadFailed");
}
}
El modelo nunca es válido. ¿Cómo paso el modelo de la página que contiene a la acción del controlador? Esto parece ser algo simple de hacer (ciertamente estaría en Web Forms) pero me he estado atragantando con esto durante 3 horas.