从另一个局部视图发布数据时,部分视图不会呈现

时间:2013-10-28 14:20:51

标签: asp.net-mvc asp.net-mvc-4

我有一个“Home”视图,在其中我渲染了2个部分视图_P1& _p2。 以下是我在Home View中的代码:

<div>
        <div>
            @Html.Partial("_P1")
        </div>

        <div>
            @Html.Partial("_p2")
        </div>
</div>

我在_P1上有一个文本框和一个提交按钮,而_P2上只有一个标签,当我点击提交时,我希望发布数据,但是要将用户重定向到包含_P1&amp;的同一视图。 _p2。但_P2在提交后不会被渲染。

_P1上的代码:

@using (Ajax.BeginForm("_P1", "Home", new AjaxOptions(), new { Id = "_P1form" }))
{
    @Html.LabelFor(m=>m.Name)
    @Html.TextBoxFor(m=>m.Name)
}
<input type="button" value="Save Form Data" class="save-button" onclick="submitform();"/>

请帮助。

2 个答案:

答案 0 :(得分:0)

只需使用viewbag。根据您所在的步骤和视图

将其设置在控制器上
@if(!ViewBag.PostBack){
    @Html.Partial("_p2")
}

答案 1 :(得分:0)

以他们正在进行的方式渲染第一个部分,但单击按钮时可以渲染第二个局部视图。使用以下代码更新您的开始。

在AjaxOptions中,您可以执行以下操作

@using (
   Ajax.BeginForm("**Action Name from your controller**"
                   , "**Controller Name**"
                   , new  AjaxOptions
                    { 
                      HttpMethod ="Get", *// this can be get or post*
                      InsertionMode = InsertionMode.Replace, *// this will replace the content of the div. you can use the others like InsertAfter", "InsertBefore", or "Replace"*
                      UpdateTargetId="**Name of the div where you want to write the content**"
                    }
                 )
{

<div id="**div to be replaced**">
</div>

}

查看用于描述ajax选项方法可用的其他选项的网址。AjaxOptions Class

如果您希望显示进度指示器,那么有趣的是onBegin和onComplete