没有母版页的MVC部分视图呈现

时间:2018-07-20 12:53:39

标签: asp.net-mvc umbraco7

我正在创建一个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();" })
 }

我只想刷新部分视图而不会丢失我的母版页和新数据。

1 个答案:

答案 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提交表单。