ASP.NET MVC 4 Html.BeginForm en vista parcial, los valores después de la publicación no son correctos
Página principal -> Sección 1 (tiene algunos menús desplegables y un botón para guardar)
<div id="tab-section1">
@{Html.RenderPartial("_Section1", Model.Section1);}
</div>
<div id="tab-section2">
<div id="section2">
@{Html.RenderPartial("_Section2", Model.Section2);}
</div>
@{Html.RenderPartial("_SubSection2", Model.SubSection2);}
</div>
El contenido de la sección 1 se coloca en una vista parcial con @ Html.BeginForm en él. y renderizado en la vista principal usando @ Html.RenderPartial
@using MyData
@model Section1ViewModel
@using(Html.BeginForm("EditSection1", "Project", FormMethod.Post, new { id = "section1-form", name = "section-form" }))
{
@Html.HiddenFor(model => model.ProjectID)
<table id="modules">
<tr>
<td class="bold" colspan="2">Modules
</td>
</tr>
<tr>
<td>
@Html.DropDownListFor(m => m.SubmittedModules, new MultiSelectList(Model.AvailableModules, "ModuleID", "ModuleName", Model.SelectedModules.Select(m => m.ModuleID)),
new { multiple = "multiple", @class = "multiselectb" })
</td>
<td>
<input type="button" id="btnAddModule" value=" + " />
</td>
</tr>
@foreach (Module b in @Model.SelectedModules)
{
<tr>
<td colspan="2">
@b.ModuleName
</td>
</tr>
}
</table>
}
Cuando hago clic en el botón Guardar en la vista parcial, debería actualizar sus propios contenidos, así como también debería actualizarse la SubSección2 de otra vista parcial.
En el método de acción, devuelvo los nuevos valores, y para la segunda actualización parcial de la vista, creo una función de envío ajax donde hago la acción # secondpartialview.load:
[HttpPost]
public ActionResult EditSection1(Section1ViewModel viewModel)
{
Section1Data section1Data = new Section1Data(_UnitOfWork);
// save changes
section1Data.SaveSection1(viewModel);
viewModel = section1Data.GetSection1ViewModel(viewModel.ProjectID);
return PartialView("_Section1", viewModel);
}
Ajax enviará:
$("#section1-form").submit(function () {
$("#section1-saving").html("<img src='../../Images/ajax-loader.gif' />");
$.ajax({
url: this.action,
type: this.method,
data: $(this).serialize(),
success: function (result) {
$("#section1-saving").html("Saved!");
$.ajaxSettings.cache = false;
// Refresh the sub section 2 on the Section 2 tab
$("#subSection2").load('../../Projects/subSection2/' + $("#ProjectID").val());
},
error: function (jqXHR, textStatus, errorThrown) {
$("#section1-saving").html("Error: " + textStatus + " " + errorThrown);
}
});
return false;
});
El problema es: el DEBUGGER me muestra los valores actualizados para los métodos seleccionados en el método de acción, pero NO en la interfaz de usuario.
¿Qué me estoy perdiendo?