MVC开发时使用MVCPager条件查询时遇到第二页点击出现空白或者无条件查询结果!问题已经解决了,但具体为什么要这样,不明白!跪求大神解释!

Monkey_416 2016-05-30 09:07:35
首先按照官方的说明需要使用 @{Html.RegisterMvcPagerScriptResource();}这个我在默认layout里面已经添加了,如果不添加将会出现点第二页时报找不到链接的错。
在上述以前添加的情况下,发现部分页面是正常的,部分页面是不正常的,检查cshtml文件都是一样的配置。以下就是我的网页各个view目录,花红线的就是有问题的几个。



#region Home & Search
//
// GET: /User/
[Authorize]
public ActionResult Index(Guid? DepartmentID, string searchText, int p = 1)
{
LoadDepartments();
var users = uBll.GetUsers(DepartmentID, p, 10, searchText);
if (Request.IsAjaxRequest())
{
return PartialView("_PartialUserList", users);
}
return View(users);
}
/// <summary>
/// 用户列表
/// </summary>
/// <param name="searchText"></param>
/// <param name="p"></param>
/// <returns></returns>
[HttpPost]
public ActionResult AjaxSearchUserList(Guid? DepartmentID, string searchText, int p = 1)
{
LoadDepartments();
var users = uBll.GetUsers(DepartmentID, p, 10, searchText);
if (Request.IsAjaxRequest())
{
return PartialView("_PartialUserList", users);
}
return View(users);
}
#endregion



<div class="cl pd-5 bg-1 bk-gray">
@using (Ajax.BeginForm("Index", "User", new RouteValueDictionary { { "id", "" } },
new AjaxOptions { UpdateTargetId = "users", InsertionMode = InsertionMode.Replace },
new RouteValueDictionary { { "id", "searchForm" }, { "class", "" } }))
{
<div class="text-l">
部门名称:
<input id="DeptSel" type="text" class="input-text" readonly value="" onclick="showMenu();" style="width:212px;" />
搜索条件:
<input type="text" class="input-text" style="width:250px" placeholder="输入员工工号、姓名、登录名" id="searchText" name="searchText">
<button type="submit" class="btn btn-success" id="btnSearch" name=""><i class="Hui-iconfont"></i> 查询</button>
<div id="menuContent" class="menuContent" style="display:none; position: absolute;">
<ul id="treeDepts" class="ztree" style="margin-top:0; width:200px;"></ul>
</div>
<input type="text" class="input-text" style="display:none" id="DepartmentID" name="DepartmentID">
</div>
}
</div>
<div id="users">
@Html.Partial("_PartialUserList", Model)
</div>



<div style="float:left;width:50%">共 @Model.TotalPageCount 页 @Model.TotalItemCount 条记录,当前为第 @Model.CurrentPageIndex 页</div>
@Ajax.Pager(Model,
new PagerOptions
{
PageIndexParameterName = "p",
HtmlAttributes = new Dictionary<string, object> {
{ "style", "float:right" } },
PagerItemTemplate = " {0}"
},
new MvcAjaxOptions
{
UpdateTargetId = "users",
HttpMethod = "Post",
DataFormId = "searchForm",
EnableHistorySupport = false
})
</div>


以上是我的mvcpager的cshtml的设置,以及controller。
我发现对于有些页面采用搜索函数对应的方法,不会出现上述问题。有的页面必须把AjaxSearchUserList改为index才可以解决上述问题。

正是为什么需要这样,我搞不明白。感觉两者代码并没有什么区别,为什么有的可以,有的不可以。

问题重现:


这是查询的第一页。



这是点击第二页时变成的界面。

其实这是默认第一次打开的信息。
...全文
171 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
正怒月神 2016-05-31
  • 打赏
  • 举报
回复
不清楚,我这里貌似没这个问题。是不是数据查询的问题?调试看看,传递的参数,是第几页的?

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧