Model-View-Controller(MVC)模式基于用户输入,将域的建模、显示和操作分为三个独立的类。
1、模型。模型用于管理应用程序域的行为数据,并响应为获取其状态信息(通常来自视图)而发出的
请求,还会响应更改状态的指令(通常来自控制器)。
2、视图。视图用于管理信息的显示。
3、控制器。控制器用于解释用户鼠标和键盘的输入,以通知模型和/或视图进行相应的更改。
视图和控制器依赖余模型。但是,模型既不依赖于视图也不依赖于控制器,这个分离的主要优点之
一。这样的分离允许模型在独立于可视表示功能的情况下建立和测试。在许多胖客户端应用程序中视
图与控制器分离是次要的。实际上,许多用户界面框架将角色实现为一个对象。另一方面,在Web应
用程序中,视图(浏览器)与控制其(处理HTTP请求的服务器组件)的分离是很好的定义。
Model-View-Controller是用户将用户界面逻辑与业务逻辑分离开来的基础设计模式。
例子:
视图:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="DemoMVC.
_Default" %>
无标题页
控制器:
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
namespace DemoMVC
{
public partial class _Default : System.Web.UI.Page
{
private string Connstring = null;
private Model m = null;
protected void Page_Load(object sender, EventArgs e)
{
Connstring = ConfigurationManager.ConnectionStrings["Connstring"].ConnectionString;
m = new Model();
if (!IsPostBack)
{
this.GridView1.DataSource = m.SelectData(Connstring);
this.GridView1.DataBind();
this.DropDownList1.DataSource = m.TypeSelect(Connstring);
DropDownList1.DataTextField = "Type";
DropDownList1.DataValueField = "Type";
this.DropDownList1.DataBind();
}
}
protected void Button1_Click(object sender, EventArgs e)
{
this.GridView1.DataSource = m.SelectByType(DropDownList1.SelectedItem.Value,Connstring);
this.GridView1.DataBind();
}
}
}
模型:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Data.SqlClient;
分区杂项 的第 2 页
using System.Data.SqlClient;
namespace DemoMVC
{
public class Model
{
public DataSet SelectByType(string Type, string connstring)
{
try
{
SqlDataAdapter adapter = new SqlDataAdapter("proc_select_by_Type", connstring);
adapter.SelectCommand.CommandType = CommandType.StoredProcedure;
adapter.SelectCommand.Parameters.Add(new SqlParameter("@Type", Type));
DataSet ds = new DataSet();
adapter.Fill(ds);
return ds;
}
catch (Exception Err)
{
return DataError(Err);
}
}
public DataSet SelectData(string connstring)
{
try
{
SqlDataAdapter adapter = new SqlDataAdapter("proc_select", connstring);
adapter.SelectCommand.CommandType = CommandType.StoredProcedure;
DataSet ds = new DataSet();
adapter.Fill(ds);
return ds;
}
catch (Exception Err)
{
return DataError(Err);
}
}
public DataSet TypeSelect(string connstring)
{
try
{
SqlDataAdapter adapter = new SqlDataAdapter("Type_select", connstring);
adapter.SelectCommand.CommandType = CommandType.StoredProcedure;
DataSet ds = new DataSet();
adapter.Fill(ds);
return ds;
}
catch (Exception Err)
{
return DataError(Err);
}
}
public DataSet DataError(Exception Err)
{
DataSet ErrDataSet = new DataSet("Errors");
DataTable ErrDataTable = ErrDataSet.Tables.Add("Error");
ErrDataTable.Columns.Add("Message");
ErrDataTable.Rows.Add(new object[] { Err.Message });
分区杂项 的第 3 页
ErrDataTable.Rows.Add(new object[] { Err.Message });
return ErrDataSet;
}
}
}
SQL:
create database TestMVC
create table DemoMVC
ID int primary key identity(1,1),
Name varchar(50),
Type varchar(10)
(
)
insert into DemoMVC(Name,Type) values('测试数据01','类别01');
insert into DemoMVC(Name,Type) values('测试数据02','类别01');
insert into DemoMVC(Name,Type) values('测试数据03','类别01');
insert into DemoMVC(Name,Type) values('测试数据04','类别01');
insert into DemoMVC(Name,Type) values('测试数据05','类别01');
insert into DemoMVC(Name,Type) values('测试数据06','类别01');
insert into DemoMVC(Name,Type) values('测试数据11','类别02');
insert into DemoMVC(Name,Type) values('测试数据12','类别02');
insert into DemoMVC(Name,Type) values('测试数据13','类别02');
insert into DemoMVC(Name,Type) values('测试数据14','类别02');
insert into DemoMVC(Name,Type) values('测试数据15','类别02');
insert into DemoMVC(Name,Type) values('测试数据16','类别02');
insert into DemoMVC(Name,Type) values('测试数据21','类别03');
insert into DemoMVC(Name,Type) values('测试数据22','类别03');
insert into DemoMVC(Name,Type) values('测试数据23','类别03');
insert into DemoMVC(Name,Type) values('测试数据24','类别03');
insert into DemoMVC(Name,Type) values('测试数据25','类别03');
insert into DemoMVC(Name,Type) values('测试数据26','类别03');
create proc proc_select_by_Type
@Type varchar(10)
(
)
as
select * from DemoMVC where Type=@Type
create proc proc_select
as
select * from DemoMVC
create proc Type_select
as
select distinct Type from DemoMVC
配置文件:
分区杂项 的第 4 页
MVC解决方案 绘图1 DemoMVC
分区杂项 的第 5 页