今天看了3篇文章,有点启发,原来我一直就没入asp.net门槛,都不知道整天在干些什么了。
接触asp.net是在10年6月份(刚毕业),当时在公司也是边学边做项目,当时对控件也是挺好奇的,用了一段时间后,受不了一些东西。就没再用,自己琢磨着写了一个页面基类,由基类完成html的展示操作(也就是你们常说的拼接html),现在慢慢受不了这些东西,但又没有在项目中尝试其他的。因为公司让我带的有实习生,跟着我也快一年,熟悉了我写项目的那个方式。
再换又得重新来(开发的就我们5个),老总又不太同意用mvc(主要是需要3.5的支持,也不好说,老总他不知道从那公司给我弄来一套asp.net mvc 2.0的CRM源码让我研究,但是一直不让我运行项目,说运行后,能检测登录IP。)
说实话,我也是半吊子水平,整不出来啥NB东西,但是我真的烦整天对着一屏幕的html字符串。看过那几篇文章之后,我再慢慢尝试用控件开发吧,但不知道能持续多久,会又回到原来的拼接html。o(︶︿︶)o 唉。谁来救救我啊!
在用的过程中,我也问个资深人士,他没多说我这种有多么不好,只是说到后期维护时很麻烦,让我多在数据操作和业务逻辑方面下功夫。我把那个基类源码发出来一些。并且在资源里,我上传一个小项目,就是用这个。
一个页面基本信息 protected BasePageInfo page = new BasePageInfo();
一个存储页面html的StringBuilder;; protected StringBuilder html = new StringBuilder(); protected override void OnInit(EventArgs e)
{
//验证是否登陆
CheckAdminLogin();
}
public virtual void InitFuncPage()
{
html.Append(InitPage());//初始化头部页面(title、js、css ...)
html.Append(GetTop()); //获取页面头部html代码
if (!CheckAdminPermit())
{
html.Append(GetErrHtml("您没有该页面操作权限。", String.Empty));
}
else
{
int subFlag = RequestValue.FormInt("subflag");
if (subFlag > 0)
{
try
{
bool isSubmimt = true;
switch (subFlag)
{
case 1:
isSubmimt = CheckPermit(page.PageSavePermit1);
break;
case 2:
isSubmimt = CheckPermit(page.PageSavePermit2);
break;
case 3:
isSubmimt = CheckPermit(page.PageSavePermit3);
break;
}
if (isSubmimt) //有页面操作权限
{
string errinfo = ValidatorInput();
if (errinfo.Trim().Length == 0)
{
//保存操作,返回html操作成功、失败代码
html.Append(PageSave());
}
else
{
html.Append(GetErrHtml(errinfo, RequestValue.UserCurrentPageURL));
}
}
else
{
html.Append(GetErrHtml("您没有该页面操作权限。", String.Empty));
}
}
catch (Exception ex)
{
html.Append(GetErrHtml(ex.Message, RequestValue.UserCurrentPageURL));
}
}
else //执行浏览操作
{
try
{
html.Append(GetMainHtml()); //获取页面中间html代码
html.Append(GetBottom());
}
catch (Exception ex)
{
html.Append(GetErrHtml(ex.Message, String.Empty));
}
}
}
//获取页面html尾部代码
foreach (Control thisCtrl in this.Controls)
{
//将html填充前台页面
if (thisCtrl.ClientID == "ctl00")
{
//(thisCtrl as System.Web.UI.LiteralControl).Text = StringHelper.Compress(html.ToString());
(thisCtrl as System.Web.UI.LiteralControl).Text = html.ToString();
break;
}
}
}
#region 派生类继承函数 /// <summary>
/// 保存操作(派生类实现方法体)
/// </summary>
/// <returns></returns>
protected virtual StringBuilder PageSave()
{
return new StringBuilder();
} /// <summary>
/// 获取页面中间内容部分(派生类实现方法体)
/// </summary>
/// <returns></returns>
protected virtual StringBuilder GetMainHtml()
{
return new StringBuilder();
} /// <summary>
/// 页面样式代码(派生类实现方法体)
/// </summary>
/// <returns></returns>
protected virtual string GetPageStyle()
{
return "";
} /// <summary>
/// 页面开始JS代码(派生类实现方法体)
/// </summary>
/// <returns></returns>
protected virtual string GetBeginJsString()
{
return "";
}
/// <summary>
/// 页面结束JS代码(派生类实现方法体)
/// </summary>
/// <returns></returns>
protected virtual string GetEndJsString()
{
return "";
} /// <summary>
/// 页面快捷按钮代码(派生类实现方法体)
/// </summary>
/// <returns></returns>
protected virtual string GetPageTabLink()
{
return "";
} /// <summary>
/// 验证客户端输入是否正确,正确返回""空字符串(派生类实现方法体)
/// </summary>
/// <returns></returns>
protected virtual string ValidatorInput()
{
return "";
} #endregion其他的想看,可以下载源码。 谁来点拨点拨我吧。
接触asp.net是在10年6月份(刚毕业),当时在公司也是边学边做项目,当时对控件也是挺好奇的,用了一段时间后,受不了一些东西。就没再用,自己琢磨着写了一个页面基类,由基类完成html的展示操作(也就是你们常说的拼接html),现在慢慢受不了这些东西,但又没有在项目中尝试其他的。因为公司让我带的有实习生,跟着我也快一年,熟悉了我写项目的那个方式。
再换又得重新来(开发的就我们5个),老总又不太同意用mvc(主要是需要3.5的支持,也不好说,老总他不知道从那公司给我弄来一套asp.net mvc 2.0的CRM源码让我研究,但是一直不让我运行项目,说运行后,能检测登录IP。)
说实话,我也是半吊子水平,整不出来啥NB东西,但是我真的烦整天对着一屏幕的html字符串。看过那几篇文章之后,我再慢慢尝试用控件开发吧,但不知道能持续多久,会又回到原来的拼接html。o(︶︿︶)o 唉。谁来救救我啊!
在用的过程中,我也问个资深人士,他没多说我这种有多么不好,只是说到后期维护时很麻烦,让我多在数据操作和业务逻辑方面下功夫。我把那个基类源码发出来一些。并且在资源里,我上传一个小项目,就是用这个。
一个页面基本信息 protected BasePageInfo page = new BasePageInfo();
一个存储页面html的StringBuilder;; protected StringBuilder html = new StringBuilder(); protected override void OnInit(EventArgs e)
{
//验证是否登陆
CheckAdminLogin();
}
public virtual void InitFuncPage()
{
html.Append(InitPage());//初始化头部页面(title、js、css ...)
html.Append(GetTop()); //获取页面头部html代码
if (!CheckAdminPermit())
{
html.Append(GetErrHtml("您没有该页面操作权限。", String.Empty));
}
else
{
int subFlag = RequestValue.FormInt("subflag");
if (subFlag > 0)
{
try
{
bool isSubmimt = true;
switch (subFlag)
{
case 1:
isSubmimt = CheckPermit(page.PageSavePermit1);
break;
case 2:
isSubmimt = CheckPermit(page.PageSavePermit2);
break;
case 3:
isSubmimt = CheckPermit(page.PageSavePermit3);
break;
}
if (isSubmimt) //有页面操作权限
{
string errinfo = ValidatorInput();
if (errinfo.Trim().Length == 0)
{
//保存操作,返回html操作成功、失败代码
html.Append(PageSave());
}
else
{
html.Append(GetErrHtml(errinfo, RequestValue.UserCurrentPageURL));
}
}
else
{
html.Append(GetErrHtml("您没有该页面操作权限。", String.Empty));
}
}
catch (Exception ex)
{
html.Append(GetErrHtml(ex.Message, RequestValue.UserCurrentPageURL));
}
}
else //执行浏览操作
{
try
{
html.Append(GetMainHtml()); //获取页面中间html代码
html.Append(GetBottom());
}
catch (Exception ex)
{
html.Append(GetErrHtml(ex.Message, String.Empty));
}
}
}
//获取页面html尾部代码
foreach (Control thisCtrl in this.Controls)
{
//将html填充前台页面
if (thisCtrl.ClientID == "ctl00")
{
//(thisCtrl as System.Web.UI.LiteralControl).Text = StringHelper.Compress(html.ToString());
(thisCtrl as System.Web.UI.LiteralControl).Text = html.ToString();
break;
}
}
}
#region 派生类继承函数 /// <summary>
/// 保存操作(派生类实现方法体)
/// </summary>
/// <returns></returns>
protected virtual StringBuilder PageSave()
{
return new StringBuilder();
} /// <summary>
/// 获取页面中间内容部分(派生类实现方法体)
/// </summary>
/// <returns></returns>
protected virtual StringBuilder GetMainHtml()
{
return new StringBuilder();
} /// <summary>
/// 页面样式代码(派生类实现方法体)
/// </summary>
/// <returns></returns>
protected virtual string GetPageStyle()
{
return "";
} /// <summary>
/// 页面开始JS代码(派生类实现方法体)
/// </summary>
/// <returns></returns>
protected virtual string GetBeginJsString()
{
return "";
}
/// <summary>
/// 页面结束JS代码(派生类实现方法体)
/// </summary>
/// <returns></returns>
protected virtual string GetEndJsString()
{
return "";
} /// <summary>
/// 页面快捷按钮代码(派生类实现方法体)
/// </summary>
/// <returns></returns>
protected virtual string GetPageTabLink()
{
return "";
} /// <summary>
/// 验证客户端输入是否正确,正确返回""空字符串(派生类实现方法体)
/// </summary>
/// <returns></returns>
protected virtual string ValidatorInput()
{
return "";
} #endregion其他的想看,可以下载源码。 谁来点拨点拨我吧。
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="RoleList.aspx.cs" Inherits="OSWeb.UI.Admin.sys.RoleList" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
并且集成PageBase,类似这样的public partial class RoleList : PageBase
{
protected void Page_Load(object sender, EventArgs e)
{
base.page.PageName = "角色管理";
base.page.PageSubName = "角色列表";
base.page.PageContent = "角色是为了便于管理权限的权限集合,不同的权限集合(角色)代表不同的操作身份。";
base.page.PageViewPermit = "sys_role_view";
base.page.PageSavePermit1 = "sys_role_del";
base.page.isListPage = true;
base.InitFuncPage();
}
}