在MVC 3中,我有一个带有3个部分视图的视图。如何让第3个局部视图显示在同一页面上?

时间:2014-05-29 18:56:18

标签: c# jquery .net asp.net-mvc kendo-asp.net-mvc

我有3个局部视图的视图。第一个局部视图有一个下拉列表。您从下拉列表中选择了某些内容,然后第二个局部视图将在同一页面上的正下方加载。

然后我在第二个局部视图中有一个搜索表单(html.BeginForm),当我提交表单时,我想在第二个部分视图下打开第三个局部视图。

第3个局部视图有一个带模型的剑道ui网格。

现在的问题是第三个局部视图会在另一个页面上呈现。

查看:

 <section>
      <div id="searchpanel">
          @html.Partial("_1stPartial")
          <div id="2ndPartialDiv"></div>
          <div id="3rdPartialDiv"></div>
      </div>
 </section>

部分View2:

<section>
  <div id="searchblock">
     <table>
       <tr>
         <td>
            @using (Ajax.BeginForm("Search", "ControllerName", new AjaxOptions {  updateTargetId = "3rdPartialDiv"}))
          <fieldset>
          <ol>
            <li></li>
            <li>
             <input type="submit" value="Search" id="btnSearch"/>
            </li>
          </ol>
          </fieldset>
        </td>
       </tr>
      </table>
  </div>
</section>

控制器:

public ActionResult Search(model)
{
   //fill searchresults

   return PartialView("_3rdPartial", searchresults);
}

2 个答案:

答案 0 :(得分:2)

Html.BeginForm将执行整页发布。我相信你所追求的是Ajax.BeginForm。

http://msdn.microsoft.com/en-us/library/system.web.mvc.ajax.ajaxextensions.beginform(v=vs.118).aspx

示例:

    @using (Ajax.BeginForm("TheActionResultYouWantToInvokeThatWillReturnTheThirdView", "YourController", null, new AjaxOptions { UpdateTargetId = "theIdOfTheDivForTheThirdView", OnSuccess = "doFunctionIfYouNeedTo", OnFailure = "ShowPopUpErrorIfYouWant" }))
     {

     }

邮政编码添加编辑:

此标记无效,可能是UpdateTargetId未找到Div。

的原因
<section>
      <div id="searchpanel">
          @html.Partial("_1stPartial")
          <div id="2ndPartialDiv"></div>
          <div id="3rdPartialDiv"></div>
      </div>
 </section>

请参阅关闭属性上的语音标记。

答案 1 :(得分:2)

我从您那里了解到的问题是,您是从第一个PartialView提交的,如果成功,则会显示第二个。{1}}这个也一样。如果从第二个POST成功PartialView,则您需要显示第三个Ajax

为什么不在客户端使用 $.ajax ({ type:'POST' data: {}, success: function(response){ $('.specific_div_container_for_previous_partial').hide(); $('.specific_div_container_for_partial').html(response.Html); $('.specific_div_container_for_partial').show(); }, error: function(){ // whatever } }); 进行此操作?

PartialView

在服务器端,您将使用PartialView返回呈现的html。要在variable中呈现{{1}}并将其作为json对象发送到客户端,请查看THIS

更新 - 如何在jquery中序列化表单:

请关注THIS