2016-06-14 6 views
0

Я пытаюсь создать форму поиска с частичным представлением. В настоящее время я правильно обрабатываю два частичных представления и работает функция поиска. Части, с которыми я испытываю трудности, - это обновление списка элементов с содержимым, возвращаемым из метода контроллера действия.ASP.NET MVC 5 Partial View с формой 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'? Метод, который вы указали, - это 'Поиск()', и вы указали это в параметрах 'Ajax.BeginForm()'. Каков ваш метод 'Manage()' и что он делает? –

ответ

0

Вы должны изменить вид кода:

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

Контроллер объявлений должен иметь действие «Управление». –

+1

Если вы хотите, чтобы результаты отображались, выберите «Управление видом». –