//模版页面.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title> </head> <body> <a href="#">链接1</a><br/> <a href="#" id="link2" runat="server">链接2</a><br/> <a href="#">链接3</a> </body> </html>
//Template类
using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.IO;
using System.Text.RegularExpressions;
using System.Text;
namespace testweb
{
public class Template
{
#region 绑定模版到页面
/// <summary>
/// 绑定模版到页面
/// </summary>
/// <param name="SourcePage"></param>
/// <param name="PageName"></param>
public static void BindTemplateToPage(Page SourcePage, string PageName)
{
string templatepath = PageName;
if (templatepath != null && templatepath != "")
{
string TemplateContent = GetTemplate(templatepath);
BindTextToPage(SourcePage, TemplateContent);
}
}
#endregion
#region 根据模板路径读取模板内容
/// <summary>
/// 根据模板路径读取模板内容
/// </summary>
/// <param name="TemplatePath">模板(相对站点根)路径</param>
/// <returns>返回 string</returns>
public static string GetTemplate(string TemplatePath)
{
string m_path = HttpContext.Current.Server.MapPath("~/");
m_path = m_path + TemplatePath;
string str;
Encoding code = Encoding.GetEncoding(0);
StreamReader sr = null;
try
{
sr = new StreamReader(m_path, code);
str = sr.ReadToEnd();
sr.Close();
}
catch (Exception e)
{
throw new Exception(e.Message.ToString());
}
str = RepaceRequest(str);
return str;
}
#endregion
#region 替换Url请求标签
/// <summary>
/// 替换Url请求标签
/// </summary>
/// <param name="temstr"></param>
/// <returns></returns>
public static string RepaceRequest(string temstr)
{
String Pattern = @"{@(.*?)}";
MatchCollection Matches = Regex.Matches(temstr, Pattern, RegexOptions.IgnoreCase
| RegexOptions.IgnorePatternWhitespace | RegexOptions.ExplicitCapture);
if (Matches.Count > 0)
{
for (int i = 0; i < Matches.Count; i++)
{
int m_length = Matches[i].Value.Length - 3;
string ParterName = Matches[i].Value.Substring(2, m_length).Trim();
string ParterValue = HttpContext.Current.Request[ParterName];
if (ParterValue == null)
{
ParterValue = "";
}
else
{
try
{
Int32.Parse(ParterValue);
}
catch
{
ParterValue = "";
}
}
temstr = temstr.Replace(Matches[i].Value, ParterValue.ToString().Trim());
}
//temstr = temstr.Replace("剩余时间", "距开始时间");
return temstr;
}
else
return temstr;
}
#endregion
#region 绑定模版到页面(直接输入模版)
/// <summary>
/// 绑定模版到页面(直接输入模版)
/// </summary>
/// <param name="SourcePage"></param>
/// <param name="PageName"></param>
public static void BindTextToPage(Page SourcePage, string TemplateContent)
{
Control MyTemplateControl = new Control();
try
{
MyTemplateControl = SourcePage.ParseControl(TemplateContent);
}
catch (Exception ex)
{
throw ex;
}
SourcePage.Controls.Add(MyTemplateControl);
}
#endregion
}
}//测试页面代码
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="testDemo.aspx.cs" Inherits="testweb.testDemo" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> </head> <body> <form id="form1" runat="server"> <div> <br/><a href="#" id="pagelink1" runat="server" >页面链接</a> </div> </form> </body>
//测试页面后台
using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Html=System.Web.UI.HtmlControls;
namespace testweb
{
//Page_Init在Page_Load前执行
public partial class testDemo : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Html.HtmlAnchor link2 = (Html.HtmlAnchor)Page.FindControl("link2");
Response.Write(link2.InnerHtml);
link2.Visible = false;
}
protected void Page_Init(object sender, EventArgs e