zoukankan      html  css  js  c++  java
  • 我也发布一个MVC程序(一)

           就在前两天,看到园子里一个哥们帮别人做个project,结果做了好久别人说不做了,正觉得那哥们冤的时候,没想到很快同样的事情便落在我身上,幸好我的东西只做了个开头,便被告知暂停,没有浪费太多的精力。废话不多说,我也上源码。

           我做的是一个绩效考核系统,将代码传上来,只有简单的小框架,因为未完工,可能有点简单,勿喷大声笑

          先看工程截图:                                                                                          1

           

           接触过Asp.net MVC的园友可能已经看出来了,这是用asp.net MVC3 开发的,其中cshtml是Razor engine的View页面。ASP.NET MVC 应用程序是开发 ASP.NET Web 窗体页面的一种替代方法;但 ASP.NET MVC 应用程序未取代 Web 窗体模型。个人觉得Razor语法糖很好用,MVC框架比Web有特有的优势。刚接触MVC 3的园友可以看MSDN MVC的指导文章^_^

         首先,新建工程,选择MVC 3 App ,建立empty project,View Engine选择Razor。

         生成工程后,我们使用Sql Server 2005作为数据库提供源,然后ORM框架使用Linq,而不是常用的EF。这里主要是因为数据库会时常变化,EF要手动写数据类,相对来说有些麻烦,当然,很多场合EF更加方便些,这里不详述。在Models文件夹点右键添加新项,选择Linq To Sql,

    如图示:

    24

    Linq的添加过程可见MSDN的LINQ部分

           此处添加了SQL中的两个表PerfUser和PerfScore,其中PerfUser的主键UserID是PerfScore的外键。其实在我接触的一些大项目中很多都不添加外键,数据表多了之后不仅关系混乱,而且表格之间的约束和级联会造成一些问题。在一些韩国公司开发的项目中,数据表之间的相互查询都是不定义外键,而是通过相同字段实现,类似于PerfUser和PerfScre中都有UserID字段,但是之间没有约束。(这只是个人看法^_^)

          然后在Models定义一个BoeUser Class,用来在View中展示数据或接收View的数据,如下:

       1: public class BoeUser
       2:     {                  
       3:         [Required]
       4:         [Display(Name="User ID")]
       5:         public string UserID { get;set;}
       6:        
       7:         public string UserName{get;set;}
       8:         public int  UserAuthority{get;set;}
       9:  
      10:         [Required]
      11:         [DataType(DataType.Password)]
      12:         [Display(Name="User Password")]
      13:         public string UserPwd { get;set;}
      14:  
      15:         [Display(Name = "是否作为管理员登陆?")]
      16:          public bool IsAdmin{get;set;}
      17:     
      18:     }

           其中[] 之间的都是声明相应的属性,如[Required]指该字段必须有,而Display表明该字段在View中对应控件显示的文字,DataType当然是说View控件的类型了,如Password 输入的文字会以粗圆点显示。

           Models完成后,然后看Controler,我们定义了BaseControler,用该类获得Model中的数据类,然后其他类继承该类得到各自所学的DataContext就可以了,子类中避免了重复多次获取DataContext。BaseControler如下:

       1: public class BaseController : Controller
       2:     {
       3:         private PerfDataDataContext _dataContext = null;
       4:         protected PerfDataDataContext DataContext
       5:         {
       6:             get
       7:             {
       8:                 if (_dataContext == null)
       9:                 {
      10:                     _dataContext = new PerfDataDataContext();
      11:                 }
      12:                 var option = new DataLoadOptions();
      13:                 option.LoadWith<PerfUser>(p => p.UserID);
      14:                 _dataContext.LoadOptions = option;
      15:                 return _dataContext;
      16:             }
      17:  
      18:         }
      19:  
      20:         protected PerfDataDataContext ScoreDataContext
      21:         {
      22:             get
      23:             {
      24:                 if (_dataContext == null)
      25:                 {
      26:                     _dataContext = new PerfDataDataContext();
      27:                 }
      28:                 var option = new DataLoadOptions();
      29:                 option.LoadWith<PerfScore>(p => p.ScoreID);
      30:                 _dataContext.LoadOptions = option;
      31:                 return _dataContext;
      32:             }
      33:         }
      34:     }

    子类继承BaseController直接使用各自的DataContext即可。

           这里的Controller只有三个,分别是LoginController 、ScoreController、Admin/PerfManagerController。

           时间有限,剩下的Controller及View下篇细讲,请看我也发布一个MVC程序(二)

    代码附上(基于Asp.net MVC 3 简单绩效考核系统,使用时请先用Sql Server附加DBData文件夹下的数据库,然后修改WebConfig下的数据库连接字符串)。

    轻点这里下载

    分享到: 更多
  • 相关阅读:
    25.C++- 泛型编程之函数模板(详解)
    Windows10 + Visual Studio 2017 + CMake +OpenCV编译、开发环境配置及测试
    终于解决了python 3.x import cv2 “ImportError: DLL load failed: 找不到指定的模块” 及“pycharm关于cv2没有代码提示”的问题
    Python的开源人脸识别库:离线识别率高达99.38%(附源码)
    python获取公网ip的几种方式
    Chrome与chromedriver.exe的版本对应
    Google Gson用法
    idea 报错javax/xml/bind/DatatypeConverter
    org.slf4j:slf4j-api:添加日志管理
    基本使用——OkHttp3详细使用教程
  • 原文地址:https://www.cnblogs.com/haisa/p/2280314.html
Copyright © 2011-2022 走看看