11.3企业宣传网站MVC4模式设计
11.3 企业宣传网站MVC 4模式设计
学习目标
学习应用DBHelper类和Common类。
11.3.1 系统项目文件预览
在完成数据库创建后,接下来就是编写程序代码一一实现论坛系统的功能。为了使读者对整个网站系统有一个整体的印象,接下来首先给出网站系统项目的所有文件列表以及层次结构,如图11-15所示,其中“第1部分”是项目整体文件预览,“第2部分”给出了“App_Start”和“Content”的文件预览,“第3部分”给出了“Models”和“Scripts”的文件预览,“第4部分”给出了“Views”的文件预览。

图11-15 企业网站系统项目文件预览
11.3.2 项目文件架构
新创建的ASP.NET MVC 4 Web应用程序,其中模板选择“空”模板,视图引擎选择“ASPX”,创建成功后,默认给出的文件结构如图11-16所示。

图11-16 新创建的网站项目文件结构
1.添加Content文件夹
此时,首先需要给其添加一个文件夹“Content”,其中放置图片文件、样式文件等信息,这是规范流程,具体参见图11-15。
2.添加Scripts文件夹
这个文件夹的含义比较明确,其中就是放置一些js脚本文件,通常Web项目都会用到jQuery框架,所以复制“jquery-1.7.2.min.js”文件到该文件夹。
3.添加KindEditor
在线编辑器KindEditor几乎是Web程序必不可少的,所以也要引入在线编辑器KindEditor到项目中,首先是复制网络上下载的kindeditor-4.1.7文件夹到项目根目录下,然后需要添加引用“kindeditor-4.1.7/asp.net/bin/LitJSON.dll”文件到项目中。具体操作步骤如下。
(1)在项目中,如图11-17所示,右击“引用”项目,在弹出的快捷菜单中选择“添加引用”命令,弹出如图11-18所示对话框。

图11-17 选择“添加引用”命令

图11-18 “引用管理器”对话框
(2)在图11-18中,单击右下角的“浏览”按钮,显示如图11-19所示。

图11-19 选择引用文件窗口
(3)查找“kindeditor-4.1.7/asp.net/bin/LitJSON.dll”文件的位置,选择这个文件,然后单击右下角的“添加”按钮,显示如图11-20所示。

图11-20 引用管理器确认窗口
(4)在图11-20中,很明显可以看到“LitJSON.dll”文件已经选择上了,直接单击“确定”按钮即可。此时,就可以看到Web项目中的“引用”项目中已经有该文件了,如图11-21所示。

图11-21 添加引用后的文件项目
11.3.3 应用DBHelper类和Common类
在模型文件夹(Models)中,需要增加操作数据库通用类DBHelper。也就是第7章介绍的DBHelper类,把DBHelper.cs文件直接复制到模型文件夹中。需要修改的通常是其中的GetConn()方法,主要修改数据库服务器名称、登录账号、口令、数据库名称信息,GetConn()方法完整代码如下。
/// <summary>
///生成连接字符串
/// </summary>
/// <returns></returns>
public SqlConnection GetConn()
{
string connstr = @"server=hst01_pc;uid=sa;pwd=sa;database=
company_db";
SqlConnection conn = new SqlConnection(connstr);
return conn;
}
#endregion
另外,需要在模型文件夹中增加一个业务操作公共类文件Common.cs,其中主要编写整个项目中通用的一些功能方法,如生成随机字符串、验证码、MD5加密方法、获取某个表信息等。接下来给出业务操作公共类文件Common.cs的完整代码,其中编写的方法基本上都写有注释,这里先不做过多的解释,在后面功能分析中会讲解其中的部分代码。
using System;
using System.Collections;
using System.Collections.Generic;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using System.Web;
namespace Company_MvcApplication.Models
{
public class Common
{
static DBHelper db = new DBHelper();
#region判断后台管理用户是否已经登录
public static bool IsLogin()
{
bool result = false;
if (HttpContext.Current.Request.Cookies["adminuser"]
==null
HttpContext.Current.Request.Cookies["adminuser"].
Value=="")
{
result = false;
}
else
{
result = true;
}
return result;
}
#endregion
#region MD5加密 验证码图片
//获取一个随机字符串
public static string GetRandom(int n)
{
string str="ABCDEFGHJKMNPQRSTUVWXYZabcdefghjkmnpqrs
tuvwxyz23456789";
Random random = new Random();
string result = string.Empty;
for (int i = 1; i <= n; i++)
{
result+=str[random.Next(0, str.Length-1)].ToString();
}
return result;
}
//输出图片
public static void DisplayImage(string str)
{
HttpContext.Current.Session["code"] = str;
//创建一个图片区域,设置宽度和高度
Bitmap image = new Bitmap(50, 20);
//获取这个图片区域,便于在其中添加元素
Graphics g = Graphics.FromImage(image);
//设置图片背景为白色
g.Clear(Color.White);
//画线构造一些盲点,意思就是故意让图片显示不清楚些
Random random = new Random();
for (int i = 0; i < 10; i++)
{
int x1 = random.Next(image.Width);
int y1 = random.Next(image.Height);
int x2 = random.Next(image.Width);
int y2 = random.Next(image.Height);
g.DrawLine(new Pen(Color.Silver), x1, y1, x2, y2);
}
//定义字体对象,设置字体和字体大小
Font font = new Font("黑体", 12);
//定义画笔颜色
SolidBrush brush = new SolidBrush(Color.BlueViolet);
//定义画笔写信息的位置坐标点,左上角为(0,0)点
PointF point = new PointF(2, 2);
//写字符串到图片中
g.DrawString(str, font, brush, point);
//给图片画边框
g.DrawRectangle(new Pen(Color.Silver),0,0,image.
Width-1, image.Height-1);
//生成一个内存流对象,便于存储并输出图片
MemoryStream ms = new MemoryStream();
//保存绘制的图片到内存流ms中
image.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
//输出二进制图片流
HttpContext.Current.Response.BinaryWrite(ms.ToArray());
}
//MD5加密方法
public static string Get_MD5(string strSource)
{
MD5 md5 = new MD5CryptoServiceProvider();
//获取密文字节数组
byte[] bytResult = md5.ComputeHash(Encoding.Default.
GetBytes(strSource));
//转换成字符串,32位
string strResult = BitConverter.ToString(bytResult);
//BitConverter转换出来的字符串会在每个字符中间产生一个分隔符,
需要去除掉
strResult = strResult.Replace("-", "");
return strResult;
}
#endregion
#region 显示网页对话框
//显示一个网页对话框
public static void ShowMessage(string str)
{
HttpContext.Current.Response.Write("<script>alert("" +
str + "");history.back();
</script>");
}
//显示一个网页对话框 方法重载
public static void ShowMessage(string str,string url)
{
HttpContext.Current.Response.Write("<script>alert(""
+ str + "");location.href=""+url+"";
</script>");
}
#endregion
#region 专门为分页处理定义的方法
//判断非数字
public static bool IsNumber(string str)
{
bool result = true;
string msg = "0123456789";
for (int i = 0; i < str.Length; i++)
{
if (msg.IndexOf(str[i]) == -1)
{
result = false;
break;
}
}
return result;
}
//处理page的取值
public static int GetPage(string pagestring, int pagecount)
{
int page;
if (pagestring == null)
{
page = 1;
}
else if (!Common.IsNumber(pagestring))
{
page = 1;
}
else if (Convert.ToInt32(pagestring) < 1)
{
page = 1;
}
else if (Convert.ToInt32(pagestring) > pagecount)
{
page = pagecount;
}
else
{
page = Convert.ToInt32(pagestring);
}
return page;
}
//获取startpageno
public static int GetStartPageno(int minpageno, int
maxpageno,int pagecount, int page, out int endpageno)
{
int startpageno;
if (minpageno > pagecount)
{
endpageno = pagecount;
}
else
{
endpageno = minpageno + (page - 1);
if (endpageno > pagecount)
{
endpageno = pagecount;
}
}
if (endpageno < maxpageno)
{
startpageno = 1;
}
else
{
startpageno = endpageno - maxpageno + 1;
}
return startpageno;
}
//完成分页效果显示功能
public static void ShowPage(int recordcount, int pagesize,
int page, int pagecount, int startpageno, int endpageno,
string url)
{
HttpContext.Current.Response.Write("div style="height:
80px;text-align:center;"class="page">");
HttpContext.Current.Response.Write("共" + recordcount.
ToString() + "条 " + pagesize.ToString() + "条/页 第"
+ page.ToString()+ "页/共" + pagecount.ToString() + "页");
HttpContext.Current.Response.Write(" &n
bsp; <br />");
if (page == 1)
{
HttpContext.Current.Response.Write("<span class="
disabled">首页</span> ");
HttpContext.Current.Response.Write("<span class="
disabled">上页</span> ");
}
else
{
HttpContext.Current.Response.Write("<a href="" +
url + "page=1">首页</a> ");
HttpContext.Current.Response.Write("<a href=""
+ url + "page=" + (page - 1).ToString() + "">
上页</a> ");
}
for (int i = startpageno; i <= endpageno; i++)
{
if (page == i)
{
HttpContext.Current.Response.Write("<span class
="current">" + i.ToString() + "</span>");
}
else
{
HttpContext.Current.Response.Write("<a href=""
+ url+"page="+i.ToString()+"">"+i.ToString()+"</a>");
}
}
if (page == pagecount)
{
HttpContext.Current.Response.Write("<span class=
"disabled">下页</span> ");
HttpContext.Current.Response.Write("<span class=
"disabled">尾页</span> ");
}
else
{
HttpContext.Current.Response.Write("<a href=""
+ url + "page=" + (page + 1).ToString() +"">下页
</a> ");
HttpContext.Current.Response.Write("<a href=""
+ url + "page=" + pagecount.ToString() + "">尾页
</a> ");
}
HttpContext.Current.Response.Write("</div>");
}
#endregion
#region 获取tb_config中的信息
public static string GetConfig(string fname)
{
string sql = "select top 1 " + fname + " from tb_config";
return db.GetValue(sql);
}
#endregion
#region 获取tb_fix中的信息
public static System.Data.DataRow GetFixRow(int id)
{
Hashtable ht = new Hashtable();
ht.Add("@id",id);
string sql = "select id,title,content from tb_fix where id=@id";
return db.GetRow(sql, ht);
}
#endregion
#region 获取推荐产品信息
public static System.Data.DataTable GetProdTable()
{
string sql = "select top 25 id,title,pic from tb_info
where classid in(select classid from tb_class where
parentid=2)order by mode desc,dt desc";
return db.GetTable(sql);
}
#endregion
#region 获取友情链接信息
public static System.Data.DataTable GetFriendTable()
{
string sql = "select id,title,pic,url,sortid from
tb_friend order by sortid asc,dt desc";
return db.GetTable(sql);
}
#endregion
}
}
上一篇:11.2数据库设计与创建
下一篇:11.4网站后台管理系统
