主页 - >第1节(有一些下拉菜单和保存按钮)
<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>
第1部分内容放在部分视图中,其中包含@ Html.BeginForm。 并使用@ 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>
}
当我在局部视图中单击保存按钮时,它应该更新自己的内容以及其他部分视图SubSection2应该刷新。
在action方法中,我返回新值,对于第二个局部视图更新,我创建了一个ajax提交函数,我在其中执行#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提交:
$("#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;
});
问题是:DEBUGGER在操作方法中向我显示了selectedModules的更新值,但在UI上没有显示。
我缺少什么?
答案 0 :(得分:2)
当我在一个父视图中有多个部分视图时,我遇到了这种问题。你应该做的是, 在父视图调用Section1 Paritial View中 像
<div id="tab-section1">
@{Html.RenderPartial("_Section1", Model.Section1);}
</div>
现在在_Section1 Partial View中调用_Section2 Partial View
<div id="section2">
@{Html.RenderPartial("_Section2", Model.Section2);}
</div>
在部分视图中使用此部分视图方法,您将能够从UI获取值。这适用于父视图内的多个局部视图。 我也喜欢称我的部分视图为
@Html.Partial("ViewName",Model.ModelName)