我正在创建一个umbraco MVC页面,该页面具有一个模板,该模板呈现带有2个下拉列表和google map的部分视图。当我加载页面时,它的主模板具有部分视图,并且一切正常。
当我从下拉列表中选择一个项目时,我将该值传递给控制器,然后将其他数据返回到局部视图。问题在于,部分视图的返回仅显示不具有主模板的部分视图。
这是控制器中的代码,该代码在首次加载页面时触发,并显示所有内容:
public ActionResult RenderForm()
{
MapFunction MF = new MapFunction ();
MF=SetDropDown();
MF.JSON= SetMarkers();
return PartialView(Partial_View_Folder + "_MapFunction .cshtml", MF);
}
这是在选择下拉菜单时触发的代码:
public ActionResult ChangeATM(MapFunction mapFunction)
{
MapFunction MF = new MapFunction ();
mapFunction= ddlATMChange(mapFunction.PTT.ToString());
MF = SetDropDown();
mapFunction.Branch = MF.Branch;
mapFunction.ATM = MF.ATM;
return PartialView(Partial_View_Folder + "_MapFunction.cshtml", mapFunction);
}
使用ddl的部分视图代码:
@using (Html.BeginUmbracoForm("ChangeATM", "MapFunction", FormMethod.Post))
{
@Html.DropDownListFor(m => m.PTT, Model.Branch, "Chose...", new { onchange = "this.form.submit();" })
}
我只想刷新部分视图而不会丢失我的母版页和新数据。
答案 0 :(得分:0)
问题是PartialView中的BeginUmbracoForm。
我将其更改为:
@using (Ajax.BeginForm("ChangeATM", "MapFunction", null, new AjaxOptions
{
HttpMethod = "Post",
InsertionMode = InsertionMode.Replace,
UpdateTargetId = "Parent"
}))
{
@Html.DropDownListFor(m => m.PTT, Model.Branch, "Choose...", new { onchange = "$(this.form).submit();", id = "use-ajax1" })
}
此外,您需要将以下脚本添加到母版页:
<script type="text/javascript">
$(document).on("change", ".use-ajax1", function (e) {
e.preventDefault();
var form = $(this).closest('form');
$(form).submit();
});
该脚本阻止默认操作,并使用AjaxCall提交表单。