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