2016-06-14 72 views
0

我正在尝试使用局部视图创建搜索表单。目前我有两个部分视图正确呈现,搜索功能正在工作。我遇到困难的部分是使用从操作控制器方法返回的内容更新项目列表。ASP.NET MVC 5使用Ajax格式的局部视图

呈现部分的视图。

<div> 
<hr /> 
    @if(Model.Count == 0) 
    { 
     <h2>No existing announcements.</h2> 
    } 
    else 
    { 

     @Html.Action("Search", "Announcements") 
     { Html.RenderPartial("_SearchResults", Model); } 
    } 
</div> 

搜索局部视图

@using (Ajax.BeginForm("Search", "Announcements", null, new AjaxOptions { InsertionMode = InsertionMode.Replace, HttpMethod = "POST", UpdateTargetId = "search-results" }, new { id = "search-form" })) 
{ 
<div class="container"> 

    <!-- Begin Search Box --> 
    <div class="row"> 
     <div id="col-lg-12"> 
      <div class="input-group col-lg-8 col-lg-offset-1"> 
       <div class="input-group-btn"> 
        <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown"> 
         Filter By Categories&nbsp;<span class="caret"></span> 
        </button> 
        <ul class="dropdown-menu" id="categoryMenu"> 
         @for (int i = 0; i < Model.Count; i++) 
         { 
          <li> 
           <a href="#" data-value="@Model[i].IsSelected" class="small" tabindex="-1"> 
            @Html.CheckBoxFor(model => Model[i].IsSelected) @Model[i].Name<text>&nbsp;</text> 
           </a> 
           @Html.HiddenFor(model => Model[i].ID) 
           @Html.HiddenFor(model => Model[i].Name) 
          </li> 
         } 
         <li> 
          <hr /> 
          <button type="button" class="btn btn-sm btn-danger pull-right" style="margin-right:5px;" id="btn-clear">Clear</button> 
         </li> 
        </ul> 
       </div> 
       @Html.TextBox("query", null, htmlAttributes: new { @class = "search-box form-control", type = "text", placeholder = "Search Announcements", id="query" }) 
       <div class="input-group-btn"> 
        <button class="btn btn-primary" type="submit"> 
         <span class="glyphicon glyphicon-search"></span> 
        </button> 
       </div> 
      </div> 
     </div> 
    </div> 
    <!-- End Search Box --> 
    <div class="row"> 
     <div class="pull-left col-lg-offset-1 form-inline"> 
      <a href="#" id="date-search" style="text-decoration: none;"> 
       <span class="glyphicon glyphicon-plus-sign"></span> Narrow By Date 
      </a> 
     </div> 
     <div class="col-lg-8 col-lg-offset-2" id="date-boxes"> 
      <div class="col-lg-4"> 
       Start: @Html.TextBox("start", null, htmlAttributes: new { type = "date", id = "startDate" }) 
      </div> 
      <div class="col-lg-4"> 
       End: @Html.TextBox("end", null, htmlAttributes: new { type = "date", id = "endDate" }) 
      </div> 
     </div> 
    </div> 
</div> 
} 

这是做脏活

[HttpGet] 
public PartialViewResult Search() 
{ 
    List<CategoryViewModel> model = new List<CategoryViewModel>(); 
    ... Some codes ... 
    return PartialView("_SearchForm", model); 
} 

[HttpPost] 
public PartialViewResult Search(List<CategoryViewModel> cvm, DateTime? start, DateTime? end, string query = "") 
{ 
    List<EditViewModel> model = new List<EditViewModel>(); 

    ... Bunch of extranneous code ... 

    return PartialView("_SearchResults", model); 
} 

我只是想用一个局部视图来渲染的结果的控制器的操作方法搜索,但是当我提交搜索表单时,我被重定向到“... path .../Search”而不是“... path .../Manage”,它应该返回。任何帮助如何正确地做到这一点将不胜感激。

+0

你什么意思,你想去'.../Manage'?你显示的方法是Search(),你已经在'Ajax.BeginForm()'参数中指定了。什么是你的'Manage()'方法,它有什么作用? –

回答

0

您应该编辑视图代码:

@using (Ajax.BeginForm("Manage", "Announcements",...) 
+0

通知控制器必须具有管理操作。 –

+1

如果你想要显示结果管理视图。 –