随笔分类 -  其它 / ASP.NET

传统asp.net传统模式与MVC模式
摘要:随着系统的庞大,你的全局信息保存在appsitting里可能会比较乱,不如为模块写个自定义的全局常量吧 首先,在Web.config中的代码可能是这样 而ConfigurationSectionForSite.WebSiteInfoHandler需要我们定义成这样 最后在页面需要的位置调用,可能这样就可以了 阅读全文
posted @ 2011-12-11 22:46 张占岭 阅读(1329) 评论(0) 推荐(0) 编辑
摘要:前几天看了老赵的Translate方式解决多表关联后产生实体类型问题,但多数据量时还是不太妥当,所以最后还是用老的方法,建立一个实体类来解决这个问题 首先我让实体类和LINQ表类型名称一样,只是加了个后缀用来区分,并让它去继承LINQ表对象,这样它将有表对象的所有非私有的属性和方法。 如图: IEntity是个接口,只要继承它,就必须实现它的一个PrimaryKey这个属性,它用来统一表对象的主... 阅读全文
posted @ 2011-11-11 11:43 张占岭 阅读(1192) 评论(0) 推荐(0) 编辑
摘要:namespace Service{ public class Service<TEntity> : IService<TEntity> where TEntity : class,Entity.IEntity { private IRepository<TEntity> iRepository = null; public Service() { iRepository = new Repository<TEntity>(); } #region IService<TEntity> 成员 public TEntity GetMode 阅读全文
posted @ 2011-11-08 13:40 张占岭 阅读(2107) 评论(0) 推荐(1) 编辑
摘要:namespace Data.TEST{ /// /// 数据通用操作实现 /// /// public class Repository : TESTRepositoryBase, IRepository where TEntity : class,IEntit... 阅读全文
posted @ 2011-11-08 13:36 张占岭 阅读(5936) 评论(2) 推荐(2) 编辑
摘要:namespace Data.TEST{ /// <summary> /// 数据操作基类 /// </summary> public abstract class TESTRepositoryBase { /// <summary> /// 数据库基类 /// </summary> protected Entity.TEST.LinqTESTDataContext _db = (Entity.TEST.LinqTESTDataContext)DbFactory.Intance("TEST", System.Threading 阅读全文
posted @ 2011-11-08 13:34 张占岭 阅读(1718) 评论(0) 推荐(1) 编辑
摘要:namespace Data{ /// <summary> /// 数据库建立工厂 /// Created By : 张占岭 /// Created Date:2011-10-14 /// Modify By: /// Modify Date: /// Modify Reason: /// </summary> internal static class DbFactory { static Sy... 阅读全文
posted @ 2011-11-08 13:33 张占岭 阅读(2363) 评论(0) 推荐(0) 编辑
摘要:namespace System.Linq.Dynamic{ public static class DynamicQueryable { public static IQueryable<T> Where<T>(this IQueryable<T> source, string predicate, params object[] values) { ... 阅读全文
posted @ 2011-11-07 23:04 张占岭 阅读(1507) 评论(1) 推荐(0) 编辑
摘要:首先它是一个具有返回类型为ViewResult的一个方法,也就是说,我们可以通过返回ViewResult对象来代替View()方法,下面的操作是合法的 ViewData.Model = model; return new ViewResult { ViewName = viewName, MasterName = this.MasterFile, ViewData = ViewData, TempData = TempData }; 它在一般情况下等同于return view(model),这是微软为我们封装好的方法,让我们省去了不少代码,它的view(object model)方法原型可能. 阅读全文
posted @ 2011-11-04 10:35 张占岭 阅读(4382) 评论(3) 推荐(1) 编辑
摘要:action中定义一个得到结果集的方法 public ActionResult GetItemTree(string title, int itemid, int? page) { pp = new PagingParam(page ?? 1, VConfig.W... 阅读全文
posted @ 2011-11-04 10:20 张占岭 阅读(4204) 评论(0) 推荐(0) 编辑
摘要:这个问题是这样的,datacontext是linq to sql数据模型的底层数据库对象所有LINQ数据表对象都是由它派生的,只要你建立一个数据库操作,就建立一个datacontext对象,当然,你可以选择用静态的datacontext,但这是不推荐的,这在微软MSDN和阿布老兄上已经说的很清楚了。言归正传,datacontext对象在频繁调用时,会出现读取数据错误问题,这个我已经测试过,确实有这种情况,现在说一下解决方法首先建立一个数据实体对象,它是与linq数据表相同的类型,如userbases,在读取数据库对象时可以用db.userbases,这样读的时候,在刷新频繁的时间,就出现问题了 阅读全文
posted @ 2011-10-31 22:23 张占岭 阅读(807) 评论(2) 推荐(0) 编辑
摘要:首先,我们一般在shared里面做的公用的ascx分部视图,没有特定的action,一般是把逻辑写在页面上,这样给页面载荷比较大。事实上MVC2.0提供了一个方法,用来在页面上加载Action,通过这个方法,可以使分部视图活起来看代码。banner.ascx<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<List<MvcApplication1.Controllers.Banner>>" %><%foreach (var i i 阅读全文
posted @ 2011-10-28 22:39 张占岭 阅读(1542) 评论(0) 推荐(0) 编辑
摘要:今天用LINQ的update出现问题了,LINQ的BUG不少,呵呵,所以自己把TSQL拿出来,做了一个封装,适用的所有表,更新有两种,普通更新和记数更新看代码:这两个方法是写在DAL里的数据操作基类里的,只有它的子类可以用它,所以用protected做为限制 /// <summary> /// 通用更新方法 /// </summary> /// <param name="tableName">表名</param> /// <param name="param">参数列表,奇数为字段,偶数为他前一 阅读全文
posted @ 2011-10-28 15:50 张占岭 阅读(875) 评论(0) 推荐(0) 编辑
摘要:首先,我们应该把数据提交方法做到一个数据库基类里,就像这样public abstract class dbBase { public virtual void SubmitChanges() { ChangeSet cSet = db.GetChangeSet(); if (cSet.Inserts.Count > 0 || cSet.Updates.Count > 0 || cSet.Deletes.Count > 0) { try { db.SubmitChanges(System.Data.Linq.ConflictMode.ContinueOnConflict); / 阅读全文
posted @ 2011-10-26 15:00 张占岭 阅读(663) 评论(1) 推荐(0) 编辑
摘要:首先,我们要重写一个View方法,才能更好的返回指定的master页面对于前台controller来说,我们建立一个它的基类/// <summary> /// 前台Controller的基类, /// 提供一些共同属性和方法 /// Created By : 张占岭 /// Created Date : 2011-10-17 /// Modify By: /// Modify Date: /// Modify Reason: /// </summary> public abstract class BaseController : Controller { /// &l 阅读全文
posted @ 2011-10-18 09:50 张占岭 阅读(862) 评论(1) 推荐(0) 编辑
摘要:实事上,一个错误的理解就是Complete()方法是提交事务的,这是错误的,事实上,它的作用的表示本事务完成,它一般放在try{}的结尾处,不用判断前台操作是否成功,如果不成功,它会自己回滚。 #region 事务问题 using (TransactionScope trans = new TransactionScope()) { try { InsertUserBase(); //它插入不成功,自己回滚 UserInfos userInfo = new UserInfos { UserID = "1", RealName = "zzl", }; db 阅读全文
posted @ 2011-10-18 09:26 张占岭 阅读(8761) 评论(8) 推荐(0) 编辑
摘要:AJAX分页和搜索,一般是两个文件,主文件aspx一般是显示搜索表单,而ascx分部视图中显示列表,一般代码如下: <%=Html.TextBox("UserName") %> <input type="button" id="search" value="搜索" /> <div id="List"> <%Html.RenderPartial("UCList", Model); %> </div>需要对按钮进行触发, 阅读全文
posted @ 2011-10-11 16:44 张占岭 阅读(3071) 评论(1) 推荐(2) 编辑
摘要:在MVC环境中,AJAX方式添加一个对象,这个对象在Models中是一个视图模型,在前台显示时是这样的代码: <%using (Html.BeginForm()) { %> 姓名:<%=Html.TextBoxFor(model=>model.UserName) %> Email:<%=Html.TextBoxFor(model=>model.Email) %> 年龄:<%=Html.TextBoxFor(model=>model.Age) %> <input type="button" id=&quo 阅读全文
posted @ 2011-10-10 22:13 张占岭 阅读(4696) 评论(0) 推荐(0) 编辑
摘要:用户数据表,每个用户有一个或者多个权限,用户表如下userid,roleid,username等权限枚举如下:public class CustomEnum { [Flags] /// <summary> /// 用户角色枚举 /// </summary> public enum UserRole { /// <summary> /// 游客 /// </summary> Visitor = 1, /// <summary> /// 学生 /// </summary> Student = 2, /// <summar 阅读全文
posted @ 2011-09-30 16:04 张占岭 阅读(2322) 评论(0) 推荐(0) 编辑
摘要:在业务逻辑层实现IOC,可以有效的减少代码量,把通用的操作写在通用的类中,然后在UI层对谁操作就建立谁的实例。具体做法看代码:Service层核心代码:接口规范:namespace Service{ /// <summary> /// 标准逻辑处理接口 /// </summary> /// <typeparam name="TEntity"></typeparam> public interface IServices<TEntity> where TEntity : class,Entity.IDataEntit 阅读全文
posted @ 2011-09-16 14:23 张占岭 阅读(2675) 评论(2) 推荐(3) 编辑
摘要:有一些概念我们清楚,但在实际中不知道如何去用,这往往是C#初学者的一个共同的问题,今天我来讲的就是“浅表拷贝”,简单来说就是把一个对象,一模一样的复制出来一份来,但浅表拷贝只复制原对象的引用地址,在改变新对象时,原来对象不会改变,而深表拷贝是完全拷贝,在改变新对象时,原对象也会受到影响。以下是浅表拷贝的实现,利用了MemberwiseClone方法class People { public string Name { get; set; } public string Email { get; set; } public People ShallowCopy() { //直接使用内置的浅拷贝方 阅读全文
posted @ 2011-09-15 10:04 张占岭 阅读(791) 评论(1) 推荐(0) 编辑