asp.net 网页中常出现的代码,要怎样重复利用? 除了母版页还有别的吗? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 母版页,frameset/iframe,js,CSS,用户控件,自定义控件 布局:模板页,用户控件样式:css脚本:写到js 可以新建一个 page基类, 把常用的代码方法,写在这个类中 如下: public class BasePage : System.Web.UI.Page { public BasePage() : base() { } protected override void Render(HtmlTextWriter writer) { if (writer is System.Web.UI.Html32TextWriter) { writer = new FormFixerHtml32TextWriter(writer.InnerWriter); } else { writer = new FormFixerHtmlTextWriter(writer.InnerWriter); } base.Render(writer); } /// <summary> /// 弹出消息框并且转向到新的URL /// </summary> /// <param name="message">消息内容</param> /// <param name="toURL">连接地址</param> public void AlertAndRedirect(string message, string toURL) { string js = "<script language=javascript>alert('{0}');window.location.replace('{1}')</script>"; HttpContext.Current.Response.Write(string.Format(js, message, toURL)); } protected override void SavePageStateToPersistenceMedium(object state) { string value = new ObjectStateFormatter().Serialize(state); string viewStateID = (DateTime.Now.Ticks + (long)this.GetHashCode()).ToString(); //产生离散的id号码 string fn = Path.Combine(this.Request.PhysicalApplicationPath, @"~/App_Data/ViewState/" + viewStateID); //ThreadPool.QueueUserWorkItem(File.WriteAllText(fn, value)); File.WriteAllText(fn, value); Cache.Insert(viewStateID, value); base.SavePageStateToPersistenceMedium(viewStateID); } */ public void PageAlert(string key, string message) { message = DeleteUnVisibleChar(message); string js = @"<Script language='JavaScript'> alert('" + message + "');</Script>"; Page.RegisterStartupScript(key, js); } // 弹出窗口信息,并关闭 public void AlertAndClose(string key, string message) { message = DeleteUnVisibleChar(message); string js = @"<Script language='JavaScript'> alert('" + message + "');window.close();</Script>"; Page.RegisterStartupScript(key, js); } // 删除不可见字符 public string DeleteUnVisibleChar(string sourceString) { System.Text.StringBuilder sBuilder = new System.Text.StringBuilder(131); for (int i = 0; i < sourceString.Length; i++) { int Unicode = sourceString[i]; if (Unicode >= 16) { sBuilder.Append(sourceString[i].ToString()); } } return sBuilder.ToString(); } //转到链接页 public void URLTo(string url, string target) { Response.Write("<script>window.open('" + url + "','" + target + "');</script>"); } ...............其它页面 改一下 继承这个页面,就可以继承里面的方法如下:public partial class bbs_TopicDetail : BasePage{ protected void Page_Load(object sender, EventArgs e) { } //提交回复 protected void imgReply_ServerClick(object sender, ImageClickEventArgs e) { if (CheckLogin() == true) { string username = GetUserName(); UserID = userbll.GetIdByUname(username); } else { //AlertAndRedirect("请登录", "../Login.aspx"); PageAlert("", "请登录"); //基类方法 return; } if (Request.Form.Get("hiddenTestN").Equals(GetToken())) { if (txtEditor.Value.Trim().Length < 5 || txtEditor.Value.Trim().Length > 2000) { PageAlert("notComment1", "回复字数不要少于5字符或大于2000字符!");//基类方法 return; } string ReplyContent = getSpecialCharUBB(txtEditor.Value.ToString()); string ip = GetRealIP(); topicbll.ReplyTopicById(TopicId, UserID, ReplyContent, ip); GetReplyTopic(TopicId); txtEditor.Value = null; SetToken();//别忘了最后要更新Session中的标志 } else { PageAlert("", "重复提交");//基类方法 } } membership在服务器上的使用 Asp.net中,Cache的多用户读操作如何lock? 用c#开发了一个asp.net网站,遇Session超时的问题 双击 没用? 如何动态设置DataGrid的PageSize的大小? DataGrid 绑定的是ArrayList ,晕了 获取本地IP问题 一个关于Excel导入SQL数据库中的bug 请教一个问题!!!!紧急! 《ASP.NET 1.0高级编程》电子版download url 不能将函数用作事件处理程序,因为它不能将值返回给事件源。 bitmap.Save(filename);bitmap.Dispose();不能释放
样式:css
脚本:写到js
{
public BasePage()
: base()
{ }
protected override void Render(HtmlTextWriter writer)
{
if (writer is System.Web.UI.Html32TextWriter)
{
writer = new FormFixerHtml32TextWriter(writer.InnerWriter);
}
else
{
writer = new FormFixerHtmlTextWriter(writer.InnerWriter);
}
base.Render(writer);
}
/// <summary>
/// 弹出消息框并且转向到新的URL
/// </summary>
/// <param name="message">消息内容</param>
/// <param name="toURL">连接地址</param>
public void AlertAndRedirect(string message, string toURL)
{ string js = "<script language=javascript>alert('{0}');window.location.replace('{1}')</script>";
HttpContext.Current.Response.Write(string.Format(js, message, toURL)); }
protected override void SavePageStateToPersistenceMedium(object state)
{
string value = new ObjectStateFormatter().Serialize(state);
string viewStateID = (DateTime.Now.Ticks + (long)this.GetHashCode()).ToString(); //产生离散的id号码
string fn = Path.Combine(this.Request.PhysicalApplicationPath, @"~/App_Data/ViewState/" + viewStateID);
//ThreadPool.QueueUserWorkItem(File.WriteAllText(fn, value));
File.WriteAllText(fn, value);
Cache.Insert(viewStateID, value);
base.SavePageStateToPersistenceMedium(viewStateID);
}
*/
public void PageAlert(string key, string message)
{
message = DeleteUnVisibleChar(message);
string js = @"<Script language='JavaScript'>
alert('" + message + "');</Script>";
Page.RegisterStartupScript(key, js);
}
// 弹出窗口信息,并关闭
public void AlertAndClose(string key, string message)
{
message = DeleteUnVisibleChar(message);
string js = @"<Script language='JavaScript'>
alert('" + message + "');window.close();</Script>";
Page.RegisterStartupScript(key, js);
}
// 删除不可见字符
public string DeleteUnVisibleChar(string sourceString)
{
System.Text.StringBuilder sBuilder = new System.Text.StringBuilder(131);
for (int i = 0; i < sourceString.Length; i++)
{
int Unicode = sourceString[i];
if (Unicode >= 16)
{
sBuilder.Append(sourceString[i].ToString());
}
}
return sBuilder.ToString();
}
//转到链接页
public void URLTo(string url, string target)
{
Response.Write("<script>window.open('" + url + "','" + target + "');</script>");
}
...............其它页面 改一下 继承这个页面,就可以继承里面的方法
如下:public partial class bbs_TopicDetail : BasePage
{
protected void Page_Load(object sender, EventArgs e)
{
}
//提交回复
protected void imgReply_ServerClick(object sender, ImageClickEventArgs e)
{
if (CheckLogin() == true)
{
string username = GetUserName();
UserID = userbll.GetIdByUname(username);
}
else
{
//AlertAndRedirect("请登录", "../Login.aspx");
PageAlert("", "请登录"); //基类方法
return;
}
if (Request.Form.Get("hiddenTestN").Equals(GetToken()))
{
if (txtEditor.Value.Trim().Length < 5 || txtEditor.Value.Trim().Length > 2000)
{
PageAlert("notComment1", "回复字数不要少于5字符或大于2000字符!");//基类方法 return;
}
string ReplyContent = getSpecialCharUBB(txtEditor.Value.ToString());
string ip = GetRealIP();
topicbll.ReplyTopicById(TopicId, UserID, ReplyContent, ip);
GetReplyTopic(TopicId);
txtEditor.Value = null;
SetToken();//别忘了最后要更新Session中的标志
}
else
{
PageAlert("", "重复提交");//基类方法 }
}