在asp.net(C#)中采用自定義標(biāo)簽和XML、XSL顯示數(shù)據(jù)
更新時(shí)間:2009年06月26日 12:12:18 作者:
在asp.net(C#)中采用自定義標(biāo)簽和XML、XSL顯示數(shù)據(jù)的實(shí)現(xiàn)代碼。
標(biāo)簽定義
public class Encoding
{
public string Encode(string cSource)
{
return System.Web.HttpUtility.HtmlEncode(cSource);
}
}
public class EmList : Label
{
public override bool EnableViewState
{
get{ return false;}
}
public string XslFile{get;set;}
public object SerialObject{get;set;}
protected override void Render(HtmlTextWriter writer)
{
if (SerialObject == null)
{
throw new Exception("對(duì)象未初始化");
}
System.Xml.Serialization.XmlSerializer oSerial = new System.Xml.Serialization.XmlSerializer(SerialObject.GetType());
System.Text.StringBuilder oSb = new System.Text.StringBuilder();
System.IO.StringWriter oWr = new System.IO.StringWriter(oSb);
string Xml = "";
oSerial.Serialize(oWr, SerialObject);
Xml =oSb.ToString();
string cXslFileName = this.MapPathSecure(XslFile);
if (!System.IO.File.Exists(cXslFileName))
{
throw new Exception("請(qǐng)加自己的處理異常程序");
}
System.Xml.Xsl.XsltArgumentList xslArgs = new System.Xml.Xsl.XsltArgumentList();
Encoding oEn = new Encoding();
xslArgs.AddExtensionObject("urn:Encoding", oEn);
System.Xml.XmlDocument oDoc = new System.Xml.XmlDocument();
try
{
oDoc.LoadXml(Xml);
}
catch
{
throw new Exception("請(qǐng)加自己的處理異常程序");
}
System.Xml.Xsl.XslCompiledTransform oTran = new System.Xml.Xsl.XslCompiledTransform();
string cXsl = "";
try
{
cXsl = System.IO.File.ReadAllText(cXslFileName);
}
catch
{
throw new Exception("請(qǐng)加自己的處理異常程序");
}
System.IO.StringReader oSr=new System.IO.StringReader(cXsl);
System.Xml.XmlReader oRe=System.Xml.XmlReader.Create(oSr);
try
{
oTran.Load(oRe);
}
catch
{
throw new Exception("請(qǐng)加自己的處理異常程序");
}
try
{
oTran.Transform(oDoc, xslArgs, writer);
}
catch
{
throw new Exception("請(qǐng)加自己的處理異常程序");
}
}
}
public class PageBar : System.Web.UI.HtmlControls.HtmlControl
{
public int PageNum{get;set;}
public int PageSize { get; set; }
public int PageCount { get; set; }
public string BaseUrl{get;set;}
protected override void Render(HtmlTextWriter writer)
{
writer.Write(string.Format("<a href={0}?PageNum=1>第一頁(yè)</a>|<a href={0}?PageNum={1}>上一頁(yè)</a>|<a href={0}?PageNum={2}>下一頁(yè)</a>|<a href={0}?PageNum={3}>尾頁(yè)</a> (共{4}當(dāng)前頁(yè){5})", BaseUrl, PageNum - 1 > 0 ? PageNum - 1 : 1, PageNum + 1 > PageCount ? PageCount : PageNum + 1, PageCount, PageCount, PageNum));
}
}
頁(yè)面定義
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication1._Default" %>
<%@Register TagPrefix="CS" Namespace="WebApplication1.Control" Assembly=" WebApplication1" %>
<!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>
<CS:EmList SerialObject="<%#List%>" XslFile="XSL/test.xslt" runat="server" /><br />
<CS:PageBar PageNum="<%#PageNum%>" BaseUrl="<%#Request.Path%>" PageCount="5" runat="server" />
</body>
</html>
其中List和PageNum為頁(yè)面屬性
XSLT:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" xmlns:Encoding="urn:Encoding">
<xsl:output method="text" />
<xsl:template match="/">
<h2>
<xsl:for-each select="ArrayOfEmployeeEntity/EmployeeEntity">
<![CDATA[<a href="http://chabaoo.cn/article/9720.htm]]><xsl:value-of select="Encoding:Encode(EmployeeID)"/><![CDATA[" alt="]]><xsl:value-of select= "Encoding:Encode(Full_Name)"/><![CDATA["><br/>]]><xsl:value-of select= "Encoding:Encode(Email_Address)"/></xsl:for-each>
</h2>
</xsl:template>
</xsl:stylesheet>
復(fù)制代碼 代碼如下:
public class Encoding
{
public string Encode(string cSource)
{
return System.Web.HttpUtility.HtmlEncode(cSource);
}
}
public class EmList : Label
{
public override bool EnableViewState
{
get{ return false;}
}
public string XslFile{get;set;}
public object SerialObject{get;set;}
protected override void Render(HtmlTextWriter writer)
{
if (SerialObject == null)
{
throw new Exception("對(duì)象未初始化");
}
System.Xml.Serialization.XmlSerializer oSerial = new System.Xml.Serialization.XmlSerializer(SerialObject.GetType());
System.Text.StringBuilder oSb = new System.Text.StringBuilder();
System.IO.StringWriter oWr = new System.IO.StringWriter(oSb);
string Xml = "";
oSerial.Serialize(oWr, SerialObject);
Xml =oSb.ToString();
string cXslFileName = this.MapPathSecure(XslFile);
if (!System.IO.File.Exists(cXslFileName))
{
throw new Exception("請(qǐng)加自己的處理異常程序");
}
System.Xml.Xsl.XsltArgumentList xslArgs = new System.Xml.Xsl.XsltArgumentList();
Encoding oEn = new Encoding();
xslArgs.AddExtensionObject("urn:Encoding", oEn);
System.Xml.XmlDocument oDoc = new System.Xml.XmlDocument();
try
{
oDoc.LoadXml(Xml);
}
catch
{
throw new Exception("請(qǐng)加自己的處理異常程序");
}
System.Xml.Xsl.XslCompiledTransform oTran = new System.Xml.Xsl.XslCompiledTransform();
string cXsl = "";
try
{
cXsl = System.IO.File.ReadAllText(cXslFileName);
}
catch
{
throw new Exception("請(qǐng)加自己的處理異常程序");
}
System.IO.StringReader oSr=new System.IO.StringReader(cXsl);
System.Xml.XmlReader oRe=System.Xml.XmlReader.Create(oSr);
try
{
oTran.Load(oRe);
}
catch
{
throw new Exception("請(qǐng)加自己的處理異常程序");
}
try
{
oTran.Transform(oDoc, xslArgs, writer);
}
catch
{
throw new Exception("請(qǐng)加自己的處理異常程序");
}
}
}
public class PageBar : System.Web.UI.HtmlControls.HtmlControl
{
public int PageNum{get;set;}
public int PageSize { get; set; }
public int PageCount { get; set; }
public string BaseUrl{get;set;}
protected override void Render(HtmlTextWriter writer)
{
writer.Write(string.Format("<a href={0}?PageNum=1>第一頁(yè)</a>|<a href={0}?PageNum={1}>上一頁(yè)</a>|<a href={0}?PageNum={2}>下一頁(yè)</a>|<a href={0}?PageNum={3}>尾頁(yè)</a> (共{4}當(dāng)前頁(yè){5})", BaseUrl, PageNum - 1 > 0 ? PageNum - 1 : 1, PageNum + 1 > PageCount ? PageCount : PageNum + 1, PageCount, PageCount, PageNum));
}
}
頁(yè)面定義
復(fù)制代碼 代碼如下:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication1._Default" %>
<%@Register TagPrefix="CS" Namespace="WebApplication1.Control" Assembly=" WebApplication1" %>
<!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>
<CS:EmList SerialObject="<%#List%>" XslFile="XSL/test.xslt" runat="server" /><br />
<CS:PageBar PageNum="<%#PageNum%>" BaseUrl="<%#Request.Path%>" PageCount="5" runat="server" />
</body>
</html>
其中List和PageNum為頁(yè)面屬性
XSLT:
復(fù)制代碼 代碼如下:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" xmlns:Encoding="urn:Encoding">
<xsl:output method="text" />
<xsl:template match="/">
<h2>
<xsl:for-each select="ArrayOfEmployeeEntity/EmployeeEntity">
<![CDATA[<a href="http://chabaoo.cn/article/9720.htm]]><xsl:value-of select="Encoding:Encode(EmployeeID)"/><![CDATA[" alt="]]><xsl:value-of select= "Encoding:Encode(Full_Name)"/><![CDATA["><br/>]]><xsl:value-of select= "Encoding:Encode(Email_Address)"/></xsl:for-each>
</h2>
</xsl:template>
</xsl:stylesheet>
您可能感興趣的文章:
相關(guān)文章
ASP.NET之Response.Cookies.Remove 無(wú)法刪除COOKIE的原因
在web開(kāi)發(fā)中Cookie是必不可少的,.NET自然也有一個(gè)強(qiáng)大的Cookie操作類,我們用起來(lái)也非常方便,不過(guò)在使用中我們會(huì)發(fā)現(xiàn)一個(gè)坑爹的事情Response.Cookies.Remove刪除不了Cookie。2013-06-06ASP.NET實(shí)現(xiàn)讀取Excel內(nèi)容并在Web上顯示
這篇文章主要介紹了ASP.NET實(shí)現(xiàn)讀取Excel內(nèi)容并在Web上顯示,很實(shí)用的一個(gè)技巧,需要的朋友可以參考下2014-08-08aspx中的mysql操作類sqldatasource使用示例分享
服務(wù)器裝了mysql odbc驅(qū)動(dòng),想在那個(gè)iis上操作另一個(gè)服務(wù)器的mysql,找到個(gè).net的sqldatasource類可以操作mysql,下在把使用方法分享一下2014-01-01MVC+EasyUI+三層新聞網(wǎng)站建立 分頁(yè)查詢數(shù)據(jù)功能(七)
這篇文章主要為大家詳細(xì)介紹了MVC+EasyUI+三層新聞網(wǎng)站建立的第七篇,教大家如何分頁(yè)查詢出數(shù)據(jù),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07使用Blazor框架實(shí)現(xiàn)在前端瀏覽器中導(dǎo)入和導(dǎo)出Excel
Blazor?是一個(gè)相對(duì)較新的框架,用于構(gòu)建具有?.NET?強(qiáng)大功能的交互式客戶端?Web?UI,本文主要介紹了如何在?Blazor?應(yīng)用程序中實(shí)現(xiàn)?SpreadJS?利用?.NET?的強(qiáng)大功能完成瀏覽器端的?Excel?導(dǎo)入導(dǎo)出,需要的可以參考一下2023-05-05詳解.net core webapi 前后端開(kāi)發(fā)分離后的配置和部署
這篇文章主要介紹了.net core webapi 前后端開(kāi)發(fā)分離后的配置和部署,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04.NET6打包部署到Windows?Service的全過(guò)程
net用了這么久,雖然多數(shù)都是部署在centos系統(tǒng),但也有部署在windows上的情況,下面這篇文章主要給大家介紹了關(guān)于.NET6打包部署到Windows?Service的相關(guān)資料,需要的朋友可以參考下2022-10-10