在上一节中,已经建好了数据表,并且新建了一个MVC项目;这一节将介绍如何创建Model、View、Controller。
第二步:创建Model、Controller、View
1、创建Model:
官方提供的例子使用的ADO.NET Entity Data Model来创建Model,还有人通过LINQ to SQL来创建。Model的功能是提供数据模型及对数据操作的支持,所以完全可以根据自己的规则来创建Model,只要达到目的就行了。
在Models文件夹下添加两个文件:ProjectModel.cs、StatusModel.cs.
先来看一下ProjectModel,这个文件包含两个类:PJProject和PJProjectDAL,PJProject提供数据实体模型,PJProjectDAL提供数据操作方法。
using System; using System.Data; using System.Text; using System.Data.SqlClient; using VeryCodes.DBUtility; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.ComponentModel; namespace Project.Model { /// /// 实体类PJProject。 /// [Serializable] public class PJProject { public PJProject() { } #region Model [DisplayName("编号")] public int SID { set; get; } [Required] [DisplayName("项目名称")] public string Name { set; get; } [DisplayName("添加时间")] public DateTime? AddTime { set; get; } [DisplayName("实际开始时间")] public DateTime? StartTime { set; get; } [Required] [DisplayName("计划开始时间")] public DateTime? PlanStartTime { set; get; } [DisplayName("实际结束时间")] public DateTime? EndTime { set; get; } [Required] [DisplayName("计划结束时间")] public DateTime? PlanEndTime { set; get; } #endregion Model } /// /// 数据操作类PJProjectDAL。 /// public class PJProjectDAL { #region 成员方法 /// /// 是否存在该记录 /// public bool Exists(int SID) { StringBuilder strSql = new StringBuilder(); strSql.Append("select count(1) from PJ_Project"); strSql.Append(" where SID=@SID "); SqlParameter[] parameters = { new SqlParameter("@SID", SqlDbType.Int,4)}; parameters[0].Value = SID; return DbHelperSQL.Exists(strSql.ToString(), parameters); } /// /// 增加一条数据 /// public int Add(PJProject model) { StringBuilder strSql = new StringBuilder(); strSql.Append("insert into PJ_Project("); strSql.Append("Name,AddTime,StartTime,PlanStartTime,EndTime,PlanEndTime)"); strSql.Append(" values ("); strSql.Append("@Name,@AddTime,@StartTime,@PlanStartTime,@EndTime,@PlanEndTime)"); strSql.Append(";select @@IDENTITY"); SqlParameter[] parameters = { new SqlParameter("@Name", SqlDbType.NVarChar,50), new SqlParameter("@AddTime", SqlDbType.DateTime), new SqlParameter("@StartTime", SqlDbType.DateTime), new SqlParameter("@PlanStartTime", SqlDbType.DateTime), new SqlParameter("@EndTime", SqlDbType.DateTime), new SqlParameter("@PlanEndTime", SqlDbType.DateTime)}; parameters[0].Value = model.Name; parameters[1].Value = model.AddTime; parameters[2].Value = model.StartTime; parameters[3].Value = model.PlanStartTime; parameters[4].Value = model.EndTime; parameters[5].Value = model.PlanEndTime; object obj = DbHelperSQL.GetSingle(strSql.ToString(), parameters); if (obj == null) { return 1; } else { return Convert.ToInt32(obj); } } /// /// 更新一条数据 /// public void Update(PJProject model) { StringBuilder strSql = new StringBuilder(); strSql.Append("update PJ_Project set "); strSql.Append("Name=@Name,"); strSql.Append("AddTime=@AddTime,"); strSql.Append("StartTime=@StartTime,"); strSql.Append("PlanStartTime=@PlanStartTime,"); strSql.Append("EndTime=@EndTime,"); strSql.Append("PlanEndTime=@PlanEndTime"); strSql.Append(" where ID=@SID "); SqlParameter[] parameters = { new SqlParameter("@SID", SqlDbType.Int,4), new SqlParameter("@Name", SqlDbType.NVarChar,50), new SqlParameter("@AddTime", SqlDbType.DateTime), new SqlParameter("@StartTime", SqlDbType.DateTime), new SqlParameter("@PlanStartTime", SqlDbType.DateTime), new SqlParameter("@EndTime", SqlDbType.DateTime), new SqlParameter("@PlanEndTime", SqlDbType.DateTime)}; parameters[0].Value = model.SID; parameters[1].Value = model.Name; parameters[2].Value = model.AddTime; parameters[3].Value = model.StartTime; parameters[4].Value = model.PlanStartTime; parameters[5].Value = model.EndTime; parameters[6].Value = model.PlanEndTime; DbHelperSQL.ExecuteSql(strSql.ToString(), parameters); } /// /// 删除一条数据 /// public void Delete(int SID) { StringBuilder strSql = new StringBuilder(); strSql.Append("delete from PJ_Project "); strSql.Append(" where ID=@SID "); SqlParameter[] parameters = { new SqlParameter("@SID", SqlDbType.Int,4)}; parameters[0].Value = SID; DbHelperSQL.ExecuteSql(strSql.ToString(), parameters); } /// /// 得到一个对象实体 /// public PJProject GetModel(int SID) { PJProject model = null; StringBuilder strSql = new StringBuilder(); strSql.Append("select top 1 ID,Name,AddTime,StartTime,PlanStartTime,EndTime,PlanEndTime "); strSql.Append(" FROM PJ_Project "); strSql.Append(" where ID=@ID "); SqlParameter[] parameters = { new SqlParameter("@ID", SqlDbType.Int,4)}; parameters[0].Value = SID; DataSet ds = DbHelperSQL.Query(strSql.ToString(), parameters); if (ds.Tables[0].Rows.Count > 0) { model = new PJProject(); if (ds.Tables[0].Rows[0]["ID"].ToString() != "") { model.SID = int.Parse(ds.Tables[0].Rows[0]["ID"].ToString()); } model.Name = ds.Tables[0].Rows[0]["Name"].ToString(); if (ds.Tables[0].Rows[0]["AddTime"].ToString() != "") { model.AddTime = DateTime.Parse(ds.Tables[0].Rows[0]["AddTime"].ToString()); } if (ds.Tables[0].Rows[0]["StartTime"].ToString() != "") { model.StartTime = DateTime.Parse(ds.Tables[0].Rows[0]["StartTime"].ToString()); } if (ds.Tables[0].Rows[0]["PlanStartTime"].ToString() != "") { model.PlanStartTime = DateTime.Parse(ds.Tables[0].Rows[0]["PlanStartTime"].ToString()); } if (ds.Tables[0].Rows[0]["EndTime"].ToString() != "") { model.EndTime = DateTime.Parse(ds.Tables[0].Rows[0]["EndTime"].ToString()); } if (ds.Tables[0].Rows[0]["PlanEndTime"].ToString() != "") { model.PlanEndTime = DateTime.Parse(ds.Tables[0].Rows[0]["PlanEndTime"].ToString()); } } return model; } /// /// 获得数据列表 /// public DataSet GetList(string strWhere) { StringBuilder strSql = new StringBuilder(); strSql.Append("select * "); strSql.Append(" FROM PJ_Project "); if (strWhere.Trim() != "") { strSql.Append(" where " + strWhere); } return DbHelperSQL.Query(strSql.ToString()); } /// /// 获得数据列表 /// public List GetModelList(string strWhere) { DataSet ds = GetList(strWhere); List modelList = new List (); int rowsCount = ds.Tables[0].Rows.Count; if (rowsCount > 0) { for (int n = 0; n < rowsCount; n++) { PJProject model = new PJProject(); if (ds.Tables[0].Rows[n]["ID"].ToString() != "") { model.SID = int.Parse(ds.Tables[0].Rows[n]["ID"].ToString()); } model.Name = ds.Tables[0].Rows[n]["Name"].ToString(); if (ds.Tables[0].Rows[n]["AddTime"].ToString() != "") { model.AddTime = DateTime.Parse(ds.Tables[0].Rows[n]["AddTime"].ToString()); } if (ds.Tables[0].Rows[n]["StartTime"].ToString() != "") { model.StartTime = DateTime.Parse(ds.Tables[0].Rows[n]["StartTime"].ToString()); } if (ds.Tables[0].Rows[n]["PlanStartTime"].ToString() != "") { model.PlanStartTime = DateTime.Parse(ds.Tables[0].Rows[n]["PlanStartTime"].ToString()); } if (ds.Tables[0].Rows[n]["EndTime"].ToString() != "") { model.EndTime = DateTime.Parse(ds.Tables[0].Rows[n]["EndTime"].ToString()); } if (ds.Tables[0].Rows[n]["PlanEndTime"].ToString() != "") { model.PlanEndTime = DateTime.Parse(ds.Tables[0].Rows[n]["PlanEndTime"].ToString()); } modelList.Add(model); } } return modelList; } #endregion 成员方法 } }
StatusModel也是如上的格式。
如果你的表有很多,那么自己手写这个文件将会很麻烦,通过代码生成工具来创建这个文件就省事多了,比如:CodeSmith、动软.net代码生成器。
2、创建Controller:
在Controllers文件上点右键,添加Controller,如图:
在弹出的窗口中,勾选单选框,自动添加相应的方法。
添加两个文件:ProjectController.cs、StatusController.cs
Controller控制数据的调用,然后发送到相应的视图。我们修改一下ProjectController中显示数据列表索引的方法。
private PJProject _model = new PJProject(); private PJProjectDAL _dal = new PJProjectDAL(); // // GET: /Project/ public ActionResult Index() { return View(_dal.GetModelList("")); }
?3、创建View
在controller文件中,找到要创建View的方法,在方法名上点右键。
如果没有Master Page,可以不用选择。
通过这种方式创建的View,已经根据Model中的实体类生成了一些Html,可以根据自己的需求继续修改。
这里修改一下Index.aspx:
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<IEnumerable<Project.Model.PJProject>>" %> <asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="server"> ??? <table style="margin:10px; width:100%"> ??????? <tr> ??????????? <th> ??????????????? 编号 ??????????? </th> ??????????? <th> ??????????????? 项目名称 ??????????? </th> ??????????? <th> ??????????????? 开始时间 ??????????? </th> ??????????? <th> ??????????????? 计划开始时间 ??????????? </th> ??????????? <th> ??????????????? 结束时间 ??????????? </th> ??????????? <th> ??????????????? 计划结束时间 ??????????? </th> ??????????? <th>操作</th> ??????? </tr> ??? <% foreach (var item in Model) { %> ??????? <tr> ??????????? <td> ??????????????? <%= Html.Encode(item.SID) %> ??????????? </td> ??????????? <td> ??????????????? <%= Html.Encode(item.Name) %> ??????????? </td> ??????????? <td> ??????????????? <%= Html.Encode(String.Format("{0:yyyy-MM-dd}", item.StartTime))%> ??????????? </td> ??????????? <td> ??????????????? <%= Html.Encode(String.Format("{0:yyyy-MM-dd}", item.PlanStartTime)) %> ??????????? </td> ??????????? <td> ??????????????? <%= Html.Encode(String.Format("{0:yyyy-MM-dd}", item.EndTime))%> ??????????? </td> ??????????? <td> ??????????????? <%= Html.Encode(String.Format("{0:yyyy-MM-dd}", item.PlanEndTime))%> ??????????? </td> ???????????? <td> ??????????????? <%= Html.ActionLink("编辑", "Edit", new { id = item.SID })%> | ??????????????? <%= Html.ActionLink("详细", "Details", new { id = item.SID })%> | ??????????????? <%= Html.ActionLink("删除", "Delete", new { id = item.SID })%> ??????????? </td> ??????? </tr> ??? <% } %> ??? </table> ??? <p> ??????? <%= Html.ActionLink("添加新项目", "Create") %> ??? </p> </asp:Content> <asp:Content ID="Content2" ContentPlaceHolderID="head" runat="server"> </asp:Content>
创建好了这三个部分,先通过数据库管理工具添加一些数据,就可以浏览一下看看了。
可以修改Controller中的其它方法,生成相应的View,执行其它的操作,如编辑、删除、查看详细等:
// // GET: /Project/Details/5 public ActionResult Details(int id) { _model = _dal.GetModel(id); return View(_model); } // // GET: /Project/Create public ActionResult Create() { return View(); } // // POST: /Project/Create [HttpPost] public ActionResult Create([Bind] PJProject model) { if (ModelState.IsValid) { // TODO: Add insert logic here model.AddTime = DateTime.Now; _dal.Add(model); return RedirectToAction("Index"); } return View(model); } // // GET: /Project/Edit/5 public ActionResult Edit(int id) { _model = _dal.GetModel(id); return View(_model); } // // POST: /Project/Edit/5 [HttpPost] public ActionResult Edit(PJProject model) { if (ModelState.IsValid) { // TODO: Add update logic here _dal.Update(model); return RedirectToAction("Index"); } return View(model); } // // GET: /Project/Delete/5 public ActionResult Delete(int id) { _dal.Delete(id); return RedirectToAction("Index"); }
这一节的内容就到这里了,设计的内容比较多,这里很多内容都是简单带过,在后续的文章中会逐渐深入。
下一节将深入介绍Model。
关键字: controller model mvc view
发表评论
相关文章
国内AI资源汇总,AI聊天、AI绘画、AI写作、AI视频、AI设计、AI编程、AI音乐等,国内顺畅访问,无需科学上网。
扫码或点击进入:萤火AI大全
文章分类
最新评论