C#程序中的数据显示:自定义标签和XML、XSL

通过在C#程序中定义标签类,然后在页面进行数据绑定,从而实现数据和显示的分离,显示的样式采用XSL定义。数据实体通过序列化为XML,然后用XSL解析,形成HTML内容。对于其中需要实现安全特性,防范XSS攻击,采用XSL自定义FUNCTION进行ENCODE。 

10年积累的成都网站建设、成都做网站经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站设计后付款的网站建设流程,更有龙潭免费网站建设让你可以放心的选择与我们合作。

C#程序中的数据显示实现代码

 
 
 
  1. public class Encoding  
  2.     {  
  3.         public string Encode(string cSource)  
  4.         {  
  5.             return System.Web.HttpUtility.HtmlEncode(cSource);//可以使用Microsoft XSS LIB  
  6.         }  
  7.     }  
  8.     public class EmList : Label  
  9.     {  
  10.         public override bool EnableViewState  
  11.         {  
  12.             get{ return false;}  
  13.         }  
  14.         public string XslFile{get;set;}  
  15.         public object SerialObject{get;set;}  
  16.         protected override void Render(HtmlTextWriter writer)  
  17.         {  
  18.             if (SerialObject == null)  
  19.             {  
  20.                 throw new Exception("对象未初始化");  
  21.             }  
  22.             System.Xml.Serialization.XmlSerializer oSerial = new System.Xml.Serialization.XmlSerializer(SerialObject.GetType());  
  23.             System.Text.StringBuilder oSb = new System.Text.StringBuilder();  
  24.             System.IO.StringWriter oWr = new System.IO.StringWriter(oSb);  
  25.             string Xml = "";  
  26.             oSerial.Serialize(oWr, SerialObject);  
  27.             Xml =oSb.ToString();  
  28.             string cXslFileName = this.MapPathSecure(XslFile);  
  29.             if (!System.IO.File.Exists(cXslFileName))  
  30.             {  
  31.                 throw new Exception("请加自己的处理异常程序");  
  32.             }  
  33.             System.Xml.Xsl.XsltArgumentList xslArgs = new System.Xml.Xsl.XsltArgumentList();  
  34.             Encoding oEn = new Encoding();  
  35.             xslArgs.AddExtensionObject("urn:Encoding", oEn);  
  36.             System.Xml.XmlDocument oDoc = new System.Xml.XmlDocument();  
  37.             try 
  38.             {  
  39.                 oDoc.LoadXml(Xml);  
  40.             }  
  41.             catch 
  42.             {  
  43.                 throw new Exception("请加自己的处理异常程序");  
  44.             }  
  45.             System.Xml.Xsl.XslCompiledTransform oTran = new System.Xml.Xsl.XslCompiledTransform();  
  46.             string cXsl = "";  
  47.             try 
  48.             {  
  49.                 cXsl = System.IO.File.ReadAllText(cXslFileName);  
  50.             }  
  51.             catch 
  52.             {  
  53.                 throw new Exception("请加自己的处理异常程序");  
  54.             }  
  55.             System.IO.StringReader oSr=new System.IO.StringReader(cXsl);  
  56.             System.Xml.XmlReader oRe=System.Xml.XmlReader.Create(oSr);  
  57.             try 
  58.             {  
  59.                 oTran.Load(oRe);  
  60.             }  
  61.             catch 
  62.             {  
  63.                 throw new Exception("请加自己的处理异常程序");  
  64.             }  
  65.             try 
  66.             {  
  67.                 oTran.Transform(oDoc, xslArgs, writer);  
  68.             }  
  69.             catch 
  70.             {  
  71.                 throw new Exception("请加自己的处理异常程序");  
  72.             }  
  73.         }  
  74.     }  
  75.     public class PageBar : System.Web.UI.HtmlControls.HtmlControl  
  76.     {  
  77.         public int PageNum{get;set;}  
  78.         public int PageSize { get; set; }  
  79.         public int PageCount { get; set; }  
  80.         public string BaseUrl{get;set;}  
  81.         protected override void Render(HtmlTextWriter writer)  
  82.         {  
  83.             writer.Write(string.Format("< a href={0}?PageNum=1>第一页< /a>|< a href={0}?PageNum={1}>上一页< /a>|< a href={0}?PageNum={2}>下一页< /a>|< a href={0}?PageNum={3}>尾页< /a>  (共{4}当前页{5})", BaseUrl, PageNum - 1 > 0 ? PageNum - 1 : 1, PageNum + 1 > PageCount ? PageCount : PageNum + 1, PageCount, PageCount, PageNum));  
  84.         }  
  85.     }  

C#程序中的数据显示:页面定义

 
 
 
  1. < %@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication1._Default" %> 
  2. < %@Register   TagPrefix="CS" Namespace="WebApplication1.Control"  Assembly=" WebApplication1" %> 
  3. < !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd "> 
  4.  
  5. < html xmlns="http://www.w3.org/1999/xhtml " > 
  6. < head runat="server"> 
  7.     < title>< /title> 
  8. < /head> 
  9. < body> 
  10.     < CS:EmList SerialObject="< %#List%>" XslFile="XSL/test.xslt" runat="server" />< br /> 
  11.     < CS:PageBar PageNum="< %#PageNum%>"  BaseUrl="< %#Request.Path%>" PageCount="5" runat="server" /> 
  12. < /body> 
  13. < /html>  

C#程序中的数据显示:其中List和PageNum为页面属性

XSLT:

 
 
 
  1. < xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform " version="1.0" xmlns:Encoding="urn:Encoding"> 
  2.  < xsl:output method="text" /> 
  3.  < xsl:template match="/"> 
  4.  < h2> 
  5.   < xsl:for-each select="ArrayOfEmployeeEntity/EmployeeEntity"> 
  6.  < ![CDATA[< a href="http://www.csdn.net/Employee.aspx?ID=]]>< 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> 
  7.  < /h2> 
  8.  < /xsl:template> 
  9. < /xsl:stylesheet>  

以上就是通过自定义标签和XML、XSL实现C#程序中数据的显示,希望对大家有所帮助。

【编辑推荐】

  1. C#自定义控件的开发:Pin和Connector
  2. 比较C#自定义控件的property(属性)和/attribute(性质)
  3. C#组件开发:COM和.NET对象之间的互操作
  4. 介绍.NET平台、C#和ASP.NET
  5. C# Attributes:定义设计期信息

分享题目:C#程序中的数据显示:自定义标签和XML、XSL
文章转载:http://www.36103.cn/qtweb/news34/22084.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联