【发布时间】:2014-02-28 04:05:55
【问题描述】:
我有一个关于 ajax 和简单过滤的问题。在写这篇文章之前,我确实或多或少地阅读了一些关于这个主题的问题,但它不一样,我没有在那里收到我的答案!
我有一个简单的搜索页面,只有很少的过滤,这个过滤不应该立即调整到结果或其他什么。因此,当用户更改过滤器并单击搜索时,他会得到结果,当他修改过滤器时,在他再次单击搜索之前不会发生任何事情。
所以我的问题更多是关于处理分页,我知道分页是如何在服务器端使用 .Skip() .Take() 进行的,但是当我点击页码时,我仍然需要进行 ajax 调用并仅使用其他页码提交相同的模型,但分页在表单之外并且没有提交内容......那么我如何重新提交带有所有过滤器的模型?
这是我的看法:
@using (Ajax.BeginForm("Index", "Search", new AjaxOptions { UpdateTargetId = "searchResults" }, new { @role = "form", @class = "form-horizontal" }))
{
@Html.AntiForgeryToken();
@Html.EditorFor(m => m.IsOnline)
@Html.EditorFor(m => m.UserLocation)
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<button type="submit" class="btn btn-default">@Base.Search</button>
</div>
</div>
}
分页是:
@if(Model.TotalPages>1)
{
<div class="row">
<div class="col-sm-12 col-centered">
<ul class="pagination text-center">
<li class="disabled"><a href="#">«</a></li>
@{
for(int i = 1; i<=Model.TotalPages; i++)
{
<li><a href="#">@i
@if(Model.CurrentPage==i)
{
<span class='sr-only'>(current)</span>
}
</a></li>
}
}
<li><a href="#">»</a></li>
</ul>
</div>
</div>
}
这是我的控制器:
[ValidateAntiForgeryToken]
[HttpPost]
public ActionResult Index(SearchModel searchModel)
{
if (ModelState.IsValid)
{
searchModel = Operations.GetSearchedListUsers(searchModel);
}
return View(searchModel);
}
所以我是怎么看的,即使我点击页码,我也应该做一个索引发布操作并重新提交模型,但是例如使用其他页码我应该怎么做?
还是我的想法完全错误,首先我不应该使用 ajax.form 和模型??
请指教?
【问题讨论】:
-
你试过 ajax.Post 和 ajax.Get 吗?
-
是的,我做到了,但不是以非常先进的方式,当你点击时只是一些按钮,就是这样......但我认为它有点不同......是的,我想听取专家的建议
标签: ajax view controller asp.net-mvc-5