此功能是在项目中分离出来的。这种架构可能不太适合别人所用,请甚用
1、NewsController.cs(控制类)
public class NewsController : AdminBaseController<NewsInfo,News>
{
public ActionResult List(int typeID)
{
//类似于Session传址
TempData["TypeID"] = typeID;
//ViewData只能在当前Action中有效
ViewData["PageSize"] = SysConfig.PageSize;
return View();
}
protected override System.Collections.IEnumerable GetPagedList(News type, int? page, int rows)
{
int typeID = (int)TempData["TypeID"];
return type.GetNews(typeID, page ?? 1, rows);
}
}
2、AdminBaseController.cs(基类)
public class AdminBaseController<TInfo, TData> : Controller
where TInfo : BaseModel, new()
where TData : BaseData<TInfo>, new()
{[HttpPost]
public void GetList(int? page, int rows)
{
TData type = new TData();
IEnumerable pagedList = GetPagedList(type, page, rows);
int total = type.Count(null);
Response.Write(Value.Common.JsonHelper.ToDataGridJson(pagedList, total));
}protected virtual IEnumerable GetPagedList(TData type, int? page, int rows)
{
return type.GetPagedList(page ?? 1, x => x.ID, false, rows);
}}
3、Business类中(只针对于当前页面的处理类)
public class News : BaseData<NewsInfo>
{
public IEnumerable GetNews(int typeID, int page, int rows)
{
var v = from t in Table
join tt in this.GetTable<NewsTypeInfo>()
on t.TypeID equals tt.ID
where tt.ID == typeID
select new { t.ID, t.Title, TypeName = tt.Name };return v.Skip((page - 1) * rows).Take(rows).ToList();
}
}
4、Models类(实体类)
NewsInfo.cs
[Table(Name = "dbo.News")]
public class NewsInfo : BaseModel
{public string TypeName{ get; set; }
}
5、页面(View)