一切从零开始。
先创建一个空的 ASP.NET MVC4 Web 应用程序。创建成功之后,解决方案中显示如下:
搜了一下App_Start下各文件的作用,摘录两段:
(1) “The files have the code that manages the bundler configuration, global filters and the route table. In the past these lived in global.asax and they have been moved to the App_Start and their own classes. They are all referenced in the global.asax appstart anyways.”
(2) "在Global.asax文件代码中,我们发现已经把过滤器,路由器,以及对样式表和脚本捆绑(Bundles)移到了其他页面,就是在根目录下的App_Start文件夹内。"
貌似应该有个BundleConfig.cs文件,这儿换成了WebApiConfig.cs,不知道为什么。这些初始文件都是干嘛的、具体怎么用也都还不清楚,只知道在RouteConfig下怎么配置路由,只是现在还没建任何Controller,稍后再配。得,先配上也行,打算一会儿先建一个IndexController,就先默认跳到Index页面吧。实现如下:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Index", action = "Index", id = UrlParameter.Optional },
namespaces:new string[]{"MyPracticeProject.Controllers"}
);
}
点击调试运行,VS会使用一个随机端口的Web服务。这个端口号如何控制还不知道,暂时搁置。
(这儿后来查了一下自己指定端口号的方法,转载过来了,见《为使用 Visual Studio 开发服务器的网站项目指定端口 》,或 http://msdn.microsoft.com/zh-cn/library/ms178109(v=vs.100).aspx)
然后添加IndexController,并添加视图,运行:
打算先做个用户管理和后台登录。数据字典参照公司现有的,用户表如下,其他相关再慢慢修改完善吧。
表名:MPP_User 所属功能:
功能描述:用户表 主键:cUserID
序号 | 字段名称 | 字段描述 | 类型(长度) | 空 | 关联表 | 关联字段 | 备注 |
1 | cUserID | 主键 | Char(32) | 否 |
|
| Oracle的Sys_guid() |
2 | nUserName | 姓名 | nvarchar(25) | 是 |
|
|
|
3 | nLoginName | 登录名 | nvarchar(25) | 是 |
|
|
|
4 | nPassword | 密码 | nvarchar(25) | 是 |
|
|
|
5 | cRoleID | 角色 | Char(32) | 是 | MPP_Role | cRoleID | 关联角色表 |
6 | cAreaID | 地区ID | Char(32) | 是 | MPP_Area | cAreaID |
|
7 | cSchoolID | 学校ID | Char(32) | 是 | MPP_ School | cSchoolID |
|
8 | nIDCard | 身份证号 | nvarchar(25) | 是 |
|
|
|
9 | iSex | 性别 | int | 是 |
|
| 0:男,1:女 |
10 | nCellPhone | 手机 | nVarchar(25) | 是 |
|
|
|
11 | nEmail | 邮箱 | nvarchar(25) | 是 |
|
|
|
12 | nBirthDate | 出生日期 | nvarchar(25) | 是 |
|
|
|
| |||||||
14 | nRemark | 备注 | nvarchar(100) | 是 |
|
| 备注信息 |
15 | iValidState | 有效状态 | int | 否 |
|
| 0:无效,1:有效 (默认为1) |
16 | dOperTime | 创建时间 | DateTime | 否 |
开始建数据库。用的是 SQL Server 2008。新建查询,执行以下SQL:
use master
go
--======================================================================
-- 我的练习项目
--======================================================================
if exists(select * from master..sysdatabases
where name=N'MyPracticeProjectDB')
drop database MyPracticeProjectDB
go
create database MyPracticeProjectDB
go
use MyPracticeProjectDB
go
--=============
-- 用户表
--=============
if exists(select * from MyPracticeProjectDB.sys.tables
where name=N'MPP_User')
drop table MPP_User
go
CREATE TABLE MPP_User(
CUSERID char(32) primary key,--用户ID
NUSERNAME nvarchar(25) NULL, --用户姓名
NLOGINNAME nvarchar(25) NULL,--登录名
NPASSWORD nvarchar(25) NULL, --密码
CROLEID char(32) NULL, --用户身份(普通用户/管理员等)
CSCHOOLID char(32) NULL, --学校ID
CAREAID char(32) NULL, --学校所属地区ID
NIDCARD nvarchar(25) NULL, --身份证号
ISEX int NULL, --性别
NCELLPHONE nvarchar(25) NULL,--手机号
NEMAIL nvarchar(25) NULL, --邮箱
NBIRTHDATE nvarchar(25) NULL,--出生日期
NREMARK nvarchar(100) NULL, --备注
IVALIDSTATE int default 1 NOT NULL, --有效状态
DOPERTIME datetime default(getdate()) NOT NULL --创建时间
)
go
select * from MPP_User
添加字段简介:(不知道是不是这样,只是看到若是在已有表格上右键选择“编写表脚本为...”-->"CREATE到..."之后,有这样的语句。)
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'主键' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'MPP_User', @level2type=N'COLUMN',@level2name=N'CUSERID'
GO
建好表格后,在程序中配置数据库连接字符串。打开项目目录最下面的Web.config,在其<configuration>下添加如下代码:
<connectionStrings>
<add name="ConnString"
connectionString="Data Source=.;Initial Catalog=MyPracticeProjectDB;User ID=Andy;Password=111;"
providerName="System.Data.SqlClient"/>
</connectionStrings>
连接字符串各项的含义网上多的是,不再赘述。配置好之后怎么用呢?对XML还不大懂,比着葫芦画瓢吧。在项目下添加一个文件夹App_Config,再在下面添加一个类,命名为DBConfig.cs。在该类中定义一个字符串将配置的连接字符串取出来:
public class DBConfig
{
//配置数据库连接字符串(从Web.config读取)
public static string DBConnectionString = ConfigurationManager.ConnectionStrings["ConnString"].ConnectionString;
public static string DBProviderName = ConfigurationManager.ConnectionStrings["ConnString"].ProviderName;
}
这个连接字符串不在配置文件中定义,而直接在类中定义应该也是可以的吧,只不过修改起来会有不便。
配这个有点儿操之过急了哈,到时候要引入DBHelper的时候,直接在那里面定义就是了。(现在还没达到水平自己写DBHelper,以后再说吧。)