自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

C#程序中的數(shù)據(jù)顯示:自定義標(biāo)簽和XML、XSL

開發(fā) 后端
本文介紹了通過自定義標(biāo)簽和XML、XSL實(shí)現(xiàn)C#程序中數(shù)據(jù)顯示的方法。

通過在C#程序中定義標(biāo)簽類,然后在頁面進(jìn)行數(shù)據(jù)綁定,從而實(shí)現(xiàn)數(shù)據(jù)和顯示的分離,顯示的樣式采用XSL定義。數(shù)據(jù)實(shí)體通過序列化為XML,然后用XSL解析,形成HTML內(nèi)容。對(duì)于其中需要實(shí)現(xiàn)安全特性,防范XSS攻擊,采用XSL自定義FUNCTION進(jìn)行ENCODE。 

C#程序中的數(shù)據(jù)顯示實(shí)現(xiàn)代碼

  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.             getreturn 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("對(duì)象未初始化");  
  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("請(qǐng)加自己的處理異常程序");  
  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("請(qǐng)加自己的處理異常程序");  
  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("請(qǐng)加自己的處理異常程序");  
  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("請(qǐng)加自己的處理異常程序");  
  64.             }  
  65.             try 
  66.             {  
  67.                 oTran.Transform(oDoc, xslArgs, writer);  
  68.             }  
  69.             catch 
  70.             {  
  71.                 throw new Exception("請(qǐng)加自己的處理異常程序");  
  72.             }  
  73.         }  
  74.     }  
  75.     public class PageBar : System.Web.UI.HtmlControls.HtmlControl  
  76.     {  
  77.         public int PageNum{get;set;}  
  78.         public int PageSize { getset; }  
  79.         public int PageCount { getset; }  
  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}當(dāng)前頁{5})", BaseUrl, PageNum - 1 > 0 ? PageNum - 1 : 1, PageNum + 1 > PageCount ? PageCount : PageNum + 1, PageCount, PageCount, PageNum));  
  84.         }  
  85.     }  

C#程序中的數(shù)據(jù)顯示:頁面定義

  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#程序中的數(shù)據(jù)顯示:其中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>  

以上就是通過自定義標(biāo)簽和XML、XSL實(shí)現(xiàn)C#程序中數(shù)據(jù)的顯示,希望對(duì)大家有所幫助。

【編輯推薦】

  1. C#自定義控件的開發(fā):Pin和Connector
  2. 比較C#自定義控件的property(屬性)和/attribute(性質(zhì))
  3. C#組件開發(fā):COM和.NET對(duì)象之間的互操作
  4. 介紹.NET平臺(tái)、C#和ASP.NET
  5. C# Attributes:定義設(shè)計(jì)期信息
責(zé)任編輯:book05 來源: csdn
相關(guān)推薦

2009-08-28 17:45:19

C#自定義數(shù)據(jù)

2009-08-04 09:56:46

C#事件處理自定義事件

2009-08-04 08:58:01

C#自定義特性

2009-08-04 12:56:51

C#自定義事件

2009-08-03 14:46:12

C#自定義控件

2009-09-03 15:46:57

C#自定義事件

2009-09-11 11:04:23

C# WinForm自

2009-08-04 13:31:35

C#自定義事件

2009-08-03 13:34:06

自定義C#控件

2009-08-03 13:39:46

C#自定義用戶控件

2025-01-10 09:28:25

2009-08-05 17:03:37

C#自定義控件

2021-06-17 06:52:37

C#自定義異常

2013-04-01 14:35:10

Android開發(fā)Android自定義x

2009-08-17 17:24:02

C#自定義消息框

2009-08-04 13:07:46

C#自定義快捷鍵

2009-08-03 13:32:38

C#自定義組件

2009-08-03 14:42:50

C#自定義控件

2009-08-05 17:15:27

C#自定義按鈕

2009-08-03 16:37:49

C#異常類
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)