日期:2014-05-20  浏览次数:20789 次

asp.net mvc传值问题
比如说现在数据库有两个表 分别为 学院表、学生表。
其中字段分别为 学院表(int colID,nvarchar(50) colName)
  学生表(int stuID,int colID,nvarchar(50) name)这里简单表示了!学生表中的学院ID为外键

mvc的页面中有一个DropDownList用于显示学院的ID号,选择后提交表单,就将学院ID传入action
[HttpPost]
public ActionResult GetColIDelete(FormCollection form)
{
  return RedirectToAction("ShowAllStuByColIDelete");
}
获取学院ID后将ID传入另一个action中,通过Id从数据库中查找出指定学院的所有学生
  [HttpGet]
  public ActionResult ShowAllStuByColIDelete(int? page)
  {
  int id = 0;
  if (TempData["id"] != null)
  {
  id = Convert.ToInt32(TempData["id"]);
  }

  var stu = db.ShowAllStuByColIDelete(id).ToPagedList(page.HasValue ? page.Value - 1 : 0, 2);
  return View(stu);
  }

这里我用了TempDatap[]的方法来获取学院ID,之后用了分页的技术,那个分页的是MvcPaging程序集里的方法。
问题是只能第一次显示时找出指定学院中的所有学生,按写一页按钮就不能再显示了,就是按下一页后db.ShowAllStuByColIDelete(id)的id为空,找不到学生数据
页面里的分页是这样写的
<%= Html.Pager(Model.PageSize, Model.PageNumber, Model.TotalItemCount %> 

想问问有谁用过那个程序集的分页吗,怎么搞,db.ShowAllStuByColIDelete这个是自己写的函数,返回IQueryable<Student>类型的,这个没有问题,主要是分页后怎么将参数再次的传入action

------解决方案--------------------
这和TempDate 传值周期有关:
TempData默认是使用Session来存储临时数据的,TempData中存放的数据只一次访问中有效,一次访问完后就会删除了的。这个一次访问指的是一个请求到下一个请求,因为在下一个请求到来之后,会从Session中取出保存在里面的TempData数据并赋值给TempData,然后将数据从Session中删除。
TempData只保存到下一个请求中,下一个请求完了之后,TempData就会被删除了。


http://www.cnblogs.com/zgqys1980/archive/2012/08/16/2641922.html