我的需求是这样的:index页面显示一个客户列表,并且在该页面对列表进行分页,页面有一个textbox和一个查询按钮,查询出来的结果也是会显示在index页面(不跳转页面),现在就有一个问题:“查询结果列表的分页问题,查询结果出来了,每页显示10条,但是点击下一页的话,查询条件丢失了,这是因为没有传递查询条件,现在就是要解决怎么将页面上的textbox的值作为作为参数进行传递,目前只传了一个页的参数page,要求用URL传值。”分不是问题,希望大家帮帮忙,比较急啊,在此先谢谢大家了。核心代码:首先是controller:public ActionResult Index(int? page)
{
int pageSize = 10;
var model = datacontext.GetCustomers();
var customes = new PageModel<Customer>(model, page ?? 0, pageSize);
return View(customes);
}
[HttpPost]
public ActionResult Index(int? page, FormCollection formcollection)
{
int pageSize = 10;
var model = datacontext.SearchCustomers(formcollection["CustomerName"]).ToList();
var customers = new PageModel<Customer>(model, page ?? 0, pageSize);
return View(customers);
}
获取客户信息的方法://获取客户列表
public List<Customer> GetCustomers()
{
return datacontext.Customer.ToList();
} //查找的客户
public List<Customer> SearchCustomers(string name)
{
return datacontext.Customer.Where(c => c.CustomerName.IndexOf(name) > -1).ToList();
}
分页的model:namespace MvcCustomers.MyModel
{
public class PageModel<T> : List<T>
{
public int CurrentPage { get; set; }//当前页
public int PageSize { get; set; }//页容量
public int TotalCount { get; set; }//总数
public int TotalPages { get; set; }//总页数 public PageModel(List<T> source, int currentPage, int pageSize)
{
CurrentPage = currentPage;
PageSize = pageSize;
TotalCount = source.Count();
TotalPages = (int)Math.Ceiling(TotalCount / (double)PageSize); this.AddRange(source.Skip(CurrentPage * PageSize).Take(PageSize));
}
//上一页
public bool HasPreviousPage
{
get
{
return (CurrentPage > 0);
}
}
//下一页
public bool HasNextPage
{
get
{
return (CurrentPage + 1 < TotalPages);
}
}
}
}index的view<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<MvcCustomers.MyModel.PageModel<MvcCustomers.Models.Customer>>" %>
<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
Index
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<h2>
Customer List</h2>
<% Html.BeginForm(); %>
<form method="post">
<p>
<label for="CustomerName">
Please input CustomerName</label><%= Html.TextBox("CustomerName") %>
<input type="submit" value="Search" />
</p>
</form>
<% Html.EndForm(); %>
<ul>
<% foreach (MvcCustomers.Models.Customer customer in Model)
{ %>
<li><a href="/Customers/Details/<%= Html.Encode(customer.CustomerID) %>">
<%= Html.Encode(customer.CustomerName)%>
</a> <%= Html.Encode(customer.ContactName) %></li>
<% } %>
</ul>
<div>
<%=Html.RouteLink("首页", "Customers", new { page =0 })%>
<% if (Model.HasPreviousPage)
{ %>
<%= Html.RouteLink("上一页", "Customers", new { page = (Model.CurrentPage - 1)}) %>
<% } %>
<% if (Model.HasNextPage)
{ %>
<%= Html.RouteLink("下一页", "Customers", new { page = (Model.CurrentPage + 1)})%>
<% } %>
<%= Html.RouteLink("末页", "Customers", new { page = Model.TotalPages - 1})%>
</div>
</asp:Content>
{
int pageSize = 10;
var model = datacontext.GetCustomers();
var customes = new PageModel<Customer>(model, page ?? 0, pageSize);
return View(customes);
}
[HttpPost]
public ActionResult Index(int? page, FormCollection formcollection)
{
int pageSize = 10;
var model = datacontext.SearchCustomers(formcollection["CustomerName"]).ToList();
var customers = new PageModel<Customer>(model, page ?? 0, pageSize);
return View(customers);
}
获取客户信息的方法://获取客户列表
public List<Customer> GetCustomers()
{
return datacontext.Customer.ToList();
} //查找的客户
public List<Customer> SearchCustomers(string name)
{
return datacontext.Customer.Where(c => c.CustomerName.IndexOf(name) > -1).ToList();
}
分页的model:namespace MvcCustomers.MyModel
{
public class PageModel<T> : List<T>
{
public int CurrentPage { get; set; }//当前页
public int PageSize { get; set; }//页容量
public int TotalCount { get; set; }//总数
public int TotalPages { get; set; }//总页数 public PageModel(List<T> source, int currentPage, int pageSize)
{
CurrentPage = currentPage;
PageSize = pageSize;
TotalCount = source.Count();
TotalPages = (int)Math.Ceiling(TotalCount / (double)PageSize); this.AddRange(source.Skip(CurrentPage * PageSize).Take(PageSize));
}
//上一页
public bool HasPreviousPage
{
get
{
return (CurrentPage > 0);
}
}
//下一页
public bool HasNextPage
{
get
{
return (CurrentPage + 1 < TotalPages);
}
}
}
}index的view<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<MvcCustomers.MyModel.PageModel<MvcCustomers.Models.Customer>>" %>
<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
Index
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<h2>
Customer List</h2>
<% Html.BeginForm(); %>
<form method="post">
<p>
<label for="CustomerName">
Please input CustomerName</label><%= Html.TextBox("CustomerName") %>
<input type="submit" value="Search" />
</p>
</form>
<% Html.EndForm(); %>
<ul>
<% foreach (MvcCustomers.Models.Customer customer in Model)
{ %>
<li><a href="/Customers/Details/<%= Html.Encode(customer.CustomerID) %>">
<%= Html.Encode(customer.CustomerName)%>
</a> <%= Html.Encode(customer.ContactName) %></li>
<% } %>
</ul>
<div>
<%=Html.RouteLink("首页", "Customers", new { page =0 })%>
<% if (Model.HasPreviousPage)
{ %>
<%= Html.RouteLink("上一页", "Customers", new { page = (Model.CurrentPage - 1)}) %>
<% } %>
<% if (Model.HasNextPage)
{ %>
<%= Html.RouteLink("下一页", "Customers", new { page = (Model.CurrentPage + 1)})%>
<% } %>
<%= Html.RouteLink("末页", "Customers", new { page = Model.TotalPages - 1})%>
</div>
</asp:Content>
解决方案 »
- about session
- 关于formview的更新功能,请高手指教
- 为什么在Application_BeginRequest里调用if (Session[XXX] == null)会出错?
- ASP.NET 全部删除问题
- 从数据库读出N条纪录后,显示在一个TABLE里面,现在我想点某一条记录,跳到另外一个页面,并把选中的记录的KEY传过去,怎么做啊
- 如果向数据库里添加有' " [ 的记录
- 100分求一个菜鸟问题,怎么在客户端用JAVASCRIPT验证服务器端控件?解决立即结帖
- 我是一个小小草
- 用Response.Redirect()能不能把网页定向显示(即设定Target属性)?
- 求webapi2作多平台数据服务端框架
- .net循环输出这样一个两级下拉的菜单.
- asp.net 页面运行部成功??
太低.-----------------
既然Page可以传,那这个,不就是多个参数么/