生活随笔
收集整理的这篇文章主要介绍了
asp.net模版页面的高级应用
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
//模版页面.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;}elsereturn 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)
{
Template.BindTemplateToPage(this, "/模版页面.html");
}
}
}
结果:
这个是直接在本页面输出,还能用runat="server"的控件 ,
附:生成静态页方法
http://blog.sina.com.cn/s/blog_6439f26f0100zhn7.html
可结合使用。
转载于:https://www.cnblogs.com/pukuimin/archive/2013/03/16/2988068.html
总结
以上是生活随笔为你收集整理的asp.net模版页面的高级应用的全部内容,希望文章能够帮你解决所遇到的问题。
如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。