因为项目前台是多变的所以本项目的主要方向在后台
前台是修改的别人模板(具体记不清在哪儿下的了 所以未放链接 如有看见请联系本人 )
主要采用技术 vs2008+sqlserver2005 辅助: ztree + codesimth +artdialog +kindeditor
数据库文件也附带其中 (如用数据库文件请在项目路径 Admin-->Items-->UserList后台代码中 BasePage改为继承System.Web.UI.Page 运行该页面为用户添加权限 其它类似)BasePage用作权限判断
为了减少项目体积 所以删除了部分图片
本项目特点
后台界面简单 大方 容易操作
代码采用codesmith生成 生成代码较为通用 可自己修改或制定适合自己的模板(如果需要带向博主所要模板)
网站前台考虑到SEO效果
后台权限针对到功能(需判断的权限在.aspx.cs继承一个类即可 考虑到企业站管理员不多 所以权限针对用户)
提供项目文件在线管理(可通过config文件配置 可修改的文件后缀名)
错误日志记录功能 可让你在线排查项目错误信息(错误日志记录在 根目录Log下)
来几张项目后台页面
这是新闻管理
这是修改项目文件
这是普通的列表页面
后台用户名:yujiajun 密码:111111
个人认为 ,不存在说的通用的网站,通用的网站都是通过一定策略 和遵守一定约定实现的
这个项目也一样通过此实现
代码简单 完全可以进行二次开发(可免费使用 但请注明出处)
#p#
codesimth 模板是自己搜集的还比较通用 没有的方法自己写上就可以了 先来看看我生成的一个dal类
using System;
using System.Data.SqlClient;
using System.Collections.Generic;
using Models;
namespace Service
{
/// <summary>
/// 本类由软件生成生成
/// 禁止修改
/// 若需要扩展,请另建一个partial class完成。
/// </summary>
public class LinksService
{
/// <summary>
/// 获取所有记录
/// </summary>
/// <returns></returns>
public List<Links> GetAll()
{
string sql="select * from Links";
return SqlHelper.GetList<Links>(sql);
}
/// <summary>
/// 根据主键ID查询单条记录
/// </summary>
/// <param name="id">主键id</typeparam>
/// <param name="reader"></param>
/// <returns></returns>
public Links GetById(int id)
{
string sql="select * from Links where ID=@id";
SqlParameter spm=new SqlParameter("@id",id);
return SqlHelper.GetSingle<Links>(sql,spm);
}
/// <summary>
/// 按照分页条件查询记录集
/// </summary>
/// <param name="startIndex">起始行号,从0开始</typeparam>
/// <param name="count">需要查询的记录条数</param>
/// <param name="sortColumn">排序列名,若要降序请用列名+" DESC",传入空默认按照主键降序排列</param>
/// <param name="links">查询条件,若无此条件请保持该属性默认值</typeparam>
/// <returns></returns>
public List<Links> GetByPage(int startIndex,int count,string sortColumn,Links links)
{
if(string.IsNullOrEmpty(sortColumn))
sortColumn="ID DESC";
string sql="exec proc_GetByPage @startIndex,@count,@order,@tableName,@pkName,@where";
SqlParameter[] spms=new SqlParameter[]
{
new SqlParameter("@startIndex",startIndex),
new SqlParameter("@count",count),
new SqlParameter("@order",sortColumn),
new SqlParameter("@tableName","Links"),
new SqlParameter("@pkName","ID"),
new SqlParameter("@where",GetConditions(links))
};
return SqlHelper.GetList<Links>(sql,spms);
}
/// <summary>
/// 获取记录条数
/// </summary>
/// <param name="links">查询条件,若无此条件请保持该属性默认值</typeparam>
/// <returns></returns>
public int GetCount(Links links)
{
string sql="select count(*) from Links where 1=1"+GetConditions(links);
return SqlHelper.GetCount(sql);
}
/// <summary>
/// 生成查询条件的sql语句
/// </summary>
/// <param name="links">查询条件,若无此条件请保持该属性默认值</typeparam>
/// <returns>sql语句中where后面的部门,以" and"开始,sql语句中最后部分应是" where 1=1"</returns>
private string GetConditions(Links links)
{
string condition="";
if(links!=null)
{
if(links.ID!=(default(int)))
{
condition+=" and ID = '"+links.ID+"'";
}
if(!string.IsNullOrEmpty(links.LName))
{
condition+=" and LName like '%"+SqlHelper.GetParameterValue(links.LName)+"%'";
}
if(!string.IsNullOrEmpty(links.LPath))
{
condition+=" and LPath like '%"+SqlHelper.GetParameterValue(links.LPath)+"%'";
}
}
return condition;
}
/// <summary>
/// 更新数据
/// </summary>
/// <param name="links">需要更新的数据实体</param>
/// <returns></returns>
//public int Update(Links links)
// {
// string sql="update Links set LName=@lName,LPath=@lPath where ID=@id";
// SqlParameter[] spms=new SqlParameter[]
// {
// new SqlParameter("@id",links.ID),new SqlParameter("@lName",links.LName??(object)DBNull.Value),new SqlParameter("@lPath",links.LPath??(object)DBNull.Value)
// };
// return SqlHelper.ExecuteNonQuery(sql,spms);
//}
/// <summary>
/// 更新数据,只传入需要更新的字段,可批量更新
/// </summary>
/// <param name="ids">需要更新的数据主键</param>
/// <returns></returns>
public int Update(Links links)
{
List<SqlParameter> spms=new List<SqlParameter>();
string sql="update Links set ";
if(links!=null)
{
if(!string.IsNullOrEmpty(links.LName))
{
sql+="LName=@lName,";
spms.Add(new SqlParameter("@lName",links.LName));
}
if(!string.IsNullOrEmpty(links.LPath))
{
sql+="LPath=@lPath,";
spms.Add(new SqlParameter("@lPath",links.LPath));
}
}
sql=sql.Substring(0,sql.Length-1);
sql+=" where ID =@id";
spms.Add(new SqlParameter("@id",links.ID));
return SqlHelper.ExecuteNonQuery(sql,spms.ToArray());
}
/// <summary>
/// 删除数据
/// </summary>
/// <param name="id">需要删除的数据主键id列表,可传单个ID,也可传数组</param>
/// <returns></returns>
public int Delete(params int[] ids)
{
if(ids.Length==0)return 0;
List<SqlParameter> spms=new List<SqlParameter>();
string sql="delete from Links where ID in (";
for(int i=0;i<ids.Length;i++)
{
sql+="@id"+i+",";
spms.Add(new SqlParameter("@id"+i,ids[i]));
}
sql=sql.Substring(0,sql.Length-1);
sql+=")";
return SqlHelper.ExecuteNonQuery(sql,spms.ToArray());
}
/// <summary>
/// 插入数据,自增列的值对应更新在实体类参数对象中
/// </summary>
/// <param name="links">需要插入的数据实体</param>
/// <returns>影响行数</returns>
public int Insert(Links links)
{
string sql="insert into Links(LName,LPath) values ("+(links.LName==null?"null":"@lName")+","+(links.LPath==null?"null":"@lPath")+");Select @@IDENTITY";
SqlParameter[] spms=new SqlParameter[]
{
new SqlParameter("@lName",links.LName??(object)DBNull.Value),new SqlParameter("@lPath",links.LPath??(object)DBNull.Value)
};
return int.Parse(SqlHelper.ExecuteScalar(sql,spms).ToString());
}
}
}
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
- 23.
- 24.
- 25.
- 26.
- 27.
- 28.
- 29.
- 30.
- 31.
- 32.
- 33.
- 34.
- 35.
- 36.
- 37.
- 38.
- 39.
- 40.
- 41.
- 42.
- 43.
- 44.
- 45.
- 46.
- 47.
- 48.
- 49.
- 50.
- 51.
- 52.
- 53.
- 54.
- 55.
- 56.
- 57.
- 58.
- 59.
- 60.
- 61.
- 62.
- 63.
- 64.
- 65.
- 66.
- 67.
- 68.
- 69.
- 70.
- 71.
- 72.
- 73.
- 74.
- 75.
- 76.
- 77.
- 78.
- 79.
- 80.
- 81.
- 82.
- 83.
- 84.
- 85.
- 86.
- 87.
- 88.
- 89.
- 90.
- 91.
- 92.
- 93.
- 94.
- 95.
- 96.
- 97.
- 98.
- 99.
- 100.
- 101.
- 102.
- 103.
- 104.
- 105.
- 106.
- 107.
- 108.
- 109.
- 110.
- 111.
- 112.
- 113.
- 114.
- 115.
- 116.
- 117.
- 118.
- 119.
- 120.
- 121.
- 122.
- 123.
- 124.
- 125.
- 126.
- 127.
- 128.
- 129.
- 130.
- 131.
- 132.
- 133.
- 134.
- 135.
- 136.
- 137.
- 138.
- 139.
- 140.
- 141.
- 142.
- 143.
- 144.
- 145.
- 146.
- 147.
- 148.
- 149.
- 150.
- 151.
- 152.
- 153.
- 154.
- 155.
- 156.
- 157.
- 158.
- 159.
- 160.
- 161.
- 162.
- 163.
- 164.
- 165.
- 166.
- 167.
- 168.
- 169.
- 170.
- 171.
- 172.
- 173.
该类少许代码经过自己修改
后台模板经测试 大多浏览器都兼容 由于不善于表达有些功能未表现出来 项目适合新手
希望各位 提出宝贵意见或建议 以便于帮助该项目长期更新
下载地址:http://files.cnblogs.com/yujiajun/yujiajun.zip
原文链接:http://www.cnblogs.com/yujiajun/archive/2012/07/18/yujiajun.html
【编辑推荐】