在上一节中,已经建好了数据表,并且新建了一个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大全
文章分类
最新评论