好的 - 有人必须在我面前这样做。
我有一个Ajax表单(Ajax表单助手),它有一个搜索框和一些用于过滤内容的复选框。搜索结果通过局部视图呈现在下方。见下文:
以下是代码:
Search.cshtml
@using (Ajax.BeginForm("SearchStuff", "FooController", new AjaxOptions
{
InsertionMode = InsertionMode.Replace,
HttpMethod = "GET",
OnFailure = "searchFailed",
LoadingElementId = "progress",
UpdateTargetId = "search-results",
}))
{
<div>
<div class="search-filter">
<span class="searchFilter">
<input type="checkbox" name="chkAll" checked />
All
<input type="checkbox" name="chkJournal" />
Journal
<input type="checkbox" name="chkBook" />
Book
<input type="checkbox" name="chkBookChapter" />
Book Chapter
<input type="checkbox" name="chkReport" />
Report
<input type="checkbox" name="chkWebsite" />
Website
<input type="checkbox" name="chkPersComm" />
Personal Comm
<input type="checkbox" name="chkConference" />
Conference
<input type="checkbox" name="chkMap" />
Map
<input type="checkbox" name="chkThesis" />
Thesis
</span>
</div>
<div class="searchbox">
<input type="search" name="q" autocomplete="off"/>
<input class="submit-button" type="submit" value="Search" />
</div>
</div>
}
<div id="search-results" class="search-results">
</div>
分页问题
我现在开始尝试变得有点聪明,并且我已经包含了一个Ajax寻呼机,以便在第一组搜索结果中返回分页。
问题是,当用户选择要渲染的下一页时,我必须保留ajax搜索表单中的所有值,但是当我在FooController中的SearchStuff方法调试时 - 它对搜索参数一无所知。任何人都可以建议我应该做什么来发送搜索参数?
<div class="pager">
@Html.Raw(
Ajax.Pager(new AjaxOptions
{
UpdateTargetId = "search-results",
OnBegin = "beginPaging",
OnSuccess = "successPaging",
OnFailure = "failurePaging"
},
Model.PageSize,
Model.PageNumber,
Model.TotalItemCount,
new { controller = "FooController", action = "SearchStuff"})
)
</div>
答案 0 :(得分:0)
在新的AjaxOptions中使用HttpMethod =“Get”。并使用Request []更改控制器以获取搜索参数。
参见
Filter is getting lost in WebGrid + Paging + Sorting + Filtering in .NET 4.0