• asp.net mvc 2 简简单单做开发 自定义Controller基类


      以前使用asp.net时总是自定义一个基类来继承Page类,来实现一些页面中常用的操作来减少代码。asp.net mvc 2 里没有分页功能,就在基类里实现分页的功能吧,在页面中定义分页常用的变量,如 RecordCount、PageSize、CurPage等。通过GetPager() 把分页字符串赋给ViewData["Page"],view页面中直接输出ViewData["page"]。

        实例代码 BaseController.cs

     1  public class BaseController : Controller
     2     {
     3         //linq数据操作类db
     4         public DB db = new DB();
     5         public int RecordCount = 0;
     6         public int PageSize = 10;
     7       
     8         public int CurPage
     9         {
    10             get
    11             {
    12                 return DNTRequest.GetInt("page"1);
    13             }
    14         }
    15         public void GetPager()
    16         {
    17             int PageCount = (int)Math.Ceiling(RecordCount/ ((double)PageSize));
    18             ViewData["Page"= Utils.GetPageNumbers(CurPage, PageCount, GetUrl(), 5);
    19         }
    20         public string GetUrl()
    21         {
    22             string url = Request.Url.ToString();
    23             url = url.Substring(url.LastIndexOf("/"+ 1);
    24 
    25             Regex reg = new Regex(@"&page=([0-9]+)", RegexOptions.IgnoreCase);
    26             Match m = reg.Match(url);
    27             if (m.Success)
    28             {
    29                 url = url.Replace(m.Groups[0].Value, "");
    30             }
    31             reg = new Regex(@"\?page=([0-9]+)", RegexOptions.IgnoreCase);
    32             m = reg.Match(url);
    33             if (m.Success)
    34             {
    35                 url = url.Replace(m.Groups[0].Value, "?1=1");
    36             }
    37             return url;
    38         }
    39     }

    ArticleController.cs

    代码
     public class ArticleController : BaseController
        {
            
    protected override void OnResultExecuting(ResultExecutingContext filterContext)
            {
                var cate
    =db.Category.ToList();
                cate.Insert(
    0,new Category() {Id=0, Name="未设置"});
                ViewData[
    "category"= cate;
                
    base.OnResultExecuting(filterContext);
            
            }


           
            
    public ActionResult Index(Article art)
            {

                ViewData[
    "searchModel"= art;
                var article 
    = db.Find<Article>(art);
                var list 
    = db.Article.Where(d =>d.title.Contains("22"));
                RecordCount 
    = article.Count();
                article 
    = article.Skip((CurPage - 1* PageSize).Take(PageSize);
                GetPager();
                
    return View("index", article);
            }

            
    //public ActionResult Index()
            
    //{
            
    //    ViewData["searchModel"] = new Article();
            
    //    var article = from d in db.Article
            
    //                  select d;
            
    //    RecordCount = article.Count();
           
            
    //    article = article.Skip((CurPage-1)*PageSize).Take(PageSize);
            
    //    GetPager();
            
    //    return View("index",article);

            
    //}
            public ActionResult Add()
            {
                Article art 
    = new Article();
                art.CreateTime 
    = DateTime.Now;
                
    return View(art);
            }
            [HttpPost]
            [ValidateInput(
    false)]
            
    public ActionResult Add(Article art)
            {
                
    try
                {
                    
    if (this.ModelState.IsValid)
                    {
                        db.Article.InsertOnSubmit(art);
                        db.SubmitChanges();
                        
    return RedirectToAction("index");
                    }
                    
    else
                    {
                        
    return View(art);
                    }
                }
                
    catch(Exception e)
                {
                    
    return Content(e.Message);
                }
               
            }
            
    public ActionResult Edit(int id)
            {
                
    return View(db.Article.FirstOrDefault(d=>d.Id==id));
            }
            [HttpPost]
            [ValidateInput(
    false)]
            
    public ActionResult Edit(int id,Article art1)
            {
                
    try
                {
                    Article art
    =db.Article.FirstOrDefault(d=>d.Id==id);
                    UpdateModel(art);
                    db.SubmitChanges();
                    
    return this.RedirectToAction("index");
                }
                
    catch
                {
                    
    return View(art1);
                }
            }
            
    public ActionResult Delete(int id)
            {
               db.Article.DeleteOnSubmit(db.Article.FirstOrDefault(d 
    => d.Id == id));
               db.SubmitChanges();
             
    return RedirectToAction("index");
            }

        }
     
    ------------------------------------------------------------------------------------
    作者:王继坤

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
    ------------------------------------------------------------------------------------
  • 相关阅读:
    关于xml的使用。
    Input标签文件上传,使用详解
    webpack 集成 Typescript && Less
    ionic3 多级联动城市选择插件 ion-multi-picker
    ionic2(3) 密码键盘组件 ionic2-pincode-input 使用
    ionic3 图片(轮播)预览 ionic-gallary-modal组件使用方法
    ios打包,通过Xcode生成ipa文件
    php常见的验证方法
    php 时间转化为刚刚、几秒前、几分前、几天前等等,友好时间提示
    ionic node-sass安装或编译失败:MSBUILD : error MSB3428: 未能加载 Visual C++ 组件“VCBuild.exe”
  • 原文地址:https://www.cnblogs.com/wangjikun3/p/1770532.html
Copyright © 2020-2023  润新知