Literal控件與Label控件的對比

1、Literal的一般用法,與Label對比
MSDN上的解釋:
使用 System.Web.UI.WebControls.Literal 控件在網頁上保留顯示文本的位置。Literal 控件與 Label 控件類似,但 Literal 控件不允許對所顯示的文本應用樣式。

可以通過設置 Text 屬性,以編程方式控制在控件中顯示的文本。
Literal Web 服務器控件介紹
          可以使用 Literal Web 服務器控件將靜態文本呈現在 Web 頁上並使用服務器代碼操縱該文本。與 Label Web 服務器控件不同,Literal 控件不將任何

HTML 元素添加到文本上。
    例如,您可能想要創建可以編程方式操縱的文本元素的簡單垂直列表。可以通過將 Label 控件或 Literal 控件的 Text 屬性設置爲要發送到 Web 頁的 HTML 內

容,創建上述簡單垂直列表。如果使用 Label 控件,則該控件被包裝在 HTML <span> 標記中。<span> 不以任何顯而易見的方式影響該頁的呈現。如果使用

Literal 控件,將不添加 <span> 標記,這使您的代碼更爲簡單。
    您無法將樣式應用於 Literal 控件的內容。這意味着在 Web 窗體設計器處於網格模式時,Literal 控件無法定位。因此,Literal 可能不適合於創建標題。此外,

您無法使用客戶端代碼確定控件的位置。
    向 Web 窗體頁添加 Literal Web 服務器控件
        在您要以編程方式設置文本而不是添加額外的 HTML 標記時,向頁面添加 Literal Web 服務器控件。
        注意:如果想顯示靜態文本,可以使用 HTML 呈現它;不需要 Literal 控件。只有在需要更改服務器代碼中的內容時才使用 Literal 控件。
    向 Web 窗體頁添加 Literal 控件
        在“設計”視圖中,從“工具箱”的“Web 窗體”選項卡將 Literal 控件拖到頁面上。
    下面的示例顯示一個簡單頁,該頁在運行時顯示標題新聞。該頁的主體(包括 Literal 控件)類似於下面的代碼:

<body>
   <form runat="server">
      <H1><asp:Literal id="Headline" runat=server /></H1>
   </form>
</body>

將代碼添加到頁面上以在運行時設置控件的 Text 屬性。
 

下面的示例顯示如何以編程方式設置 Literal 控件的文本。

// C#
private void Page_Load(object sender, System.EventArgs e)
{
   Headline.Text = "New Web Site Announced";
}

2、Literal控件的巧妙用法,這裏我把它做成了一個類似Menu控件,實現菜單的功能。

很簡單,就是設置其Text值就可以了,假如Literal的ID爲“litMenu”,那麼代

碼如下

litMenu.Text =
"<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">
  <tr>
     <td class=\"Tab1\" style=\"width:114px;\" οnclick=\"window.location.href='/onlineUserView.aspx?type=1';\">在線人員</td>
     <td class=\"Tab2\" style=\"width:114px;\" οnclick=\"window.location.href='/SMS/SMSList.aspx?type=2';\">收件箱</td>
     <td class=\"Tab1\" style=\"width:114px;\" οnclick=\"window.location.href='/SMS/SMSList.aspx?type=3';\">草稿箱</td>
     <td class=\"Tab1\" style=\"width:114px;\" οnclick=\"window.location.href='/SMS/SMSList.aspx?type=4';\">已發送</td>
    <td class=\"Tab1\" style=\"width:115px;\" οnclick=\"window.location.href='/SMS/SMSList.aspx?type=5';\">已刪除</td>
</tr>
</table>"

解析:很明顯,這裏是把其Text的值設置爲了一個Table而已,而在Table中的單元格進行菜單的點擊鏈接。呵呵好玩吧!

3、Literal控件作爲通用性Menu
     如果想把Literal控件作爲通用性Menu,那就寫成一個公共類,然後就調用。假如在一個Menu.cs類裏定義

public static string[] sName4 = new string[5] { "在線人員","收件箱", "草稿箱", "已發送", "已刪除" };  //定義菜單數組的名稱
  public static string[] sUrl4 = new string[5] { "/onlineUserView.aspx?type=1", "/SMS/SMSList.aspx?type=2", "/SMS/SMSList.aspx?type=3",

"/SMS/SMSList.aspx?type=4", "/SMS/SMSList.aspx?type=5" };   //定義每個菜單對應的鏈接的數組

/// <summary>
        /// 通用Tab
        /// </summary>
        /// <param name="litMenu">Literal的ID</param>
        /// <param name="sName">菜單數組名稱</param>
        /// <param name="sUrl">鏈接的數組的名稱</param>
        /// <param name="iSelect">選中的第幾個菜單項</param>
        /// <param name="sParameter"></param>
        public static void LoadMenuCommon(System.Web.UI.WebControls.Literal litMenu, string[] sName, string[] sUrl, int iSelect,string sParameter)
        {
            System.Text.StringBuilder sb = new StringBuilder();
            sb.Append("<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">")
                .Append("<tr>");
            for (int i = 0; i < sName.Length; i++)
            {
                string sClassName = (i + 1) == iSelect ? "Tab2" : "Tab1"; //選中的菜單用CSS中的類"Tab2",否則用"Tab1"
                int iWidth = i == (sName.Length - 1) ? 115 : 114;
                sb.Append(string.Format("<td class=\"{0}\" style=\"width:{4}px;\" οnclick=\"window.location.href='{2}{3}';\">{1}</td>", sClassName, sName[i], sUrl[i],

sParameter, iWidth));
            }
            sb.Append("</tr></table>");
            litMenu.Text = sb.ToString();
        }

這裏的“Tab2”與“Tab1”只是一個CSS類樣式,用於標識選中菜單與未選中菜單樣式的區別
.Tab1
{
 background-image: url(../Images/Tab1.gif);
 font-weight: bold;
 color: #064570;
 width: 120px;
 height: 27px;
 text-align: center;
 background-repeat: no-repeat;
 cursor: hand;
}
.Tab2
{
 background-image: url(../Images/Tab2.gif);
 font-weight: bold;
 color: #064570;
 width: 120px;
 height: 27px;
 text-align: center;
 background-repeat: no-repeat;
 cursor: hand;
}

最後一步,就是調用了,在其他的web頁,調用如下

Menu.LoadMenuCommon(LitMenu, Menu.sName4, Menu.sUrl4, 1, string.Empty);






















發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章