2011-08-29 45 views
2

我正在維護一個ASP.NET 3.5應用程序,並且我想在Button控件的Text屬性中添加一些「屏幕外」html內容,以使其更易於訪問,例如停止asp:按鈕HTML編碼的文本

<asp:Button CssClass="std-text" runat="server" ID="btnChangeLocation" 
      OnClick="btnChangeLocation_Click" 
      Text="Set<span class='offscreen'> Location</span>" /> 

但文本總是HTML編碼,我該如何阻止?要做到這一點

回答

0

一種方法是使用JavaScript替換,例如:

<asp:Button CssClass="std-text" runat="server" 
     ID="btnChangeLocation" OnClick="btnChangeLocation_Click" 
     data-text="Set<span class='offscreen'> Location</span>" 
     Text="replace-text" /> 

,並呼籲像加載一個替代方法:

$(function() { 

    replaceAllTexts(); 
}); 

function replaceAllTexts() { 

    // for each button 
    $("input[type='button']").each(function() { 

     // if the text is 'replace-text' and there is a data-text attribute 
     if($(this).text() === "replace-text" && $(this).attr("data-text")) { 
      // replace button's text 
      $(this).html($(this).attr("data-text")); 
     } 
    }); 
} 
+0

感謝您的想法,但我希望能避免使用Javascript解決方案。此外,還有一些bug('type ='button'' - >'type ='submit''和'$(this).html' - >'$(this).val'),這是行不通的因爲ad-hoc'data-text'屬性中的文本也是HTML編碼的! –

+0

這是沒有問題的,在javascript中使用'unescape()',你可以很容易地使用'$(「input」)',而不是告訴選擇器你只需要按鈕;) - 因爲你想傳遞一個HTML字符串,你需要設置元素的html(),而不是它的值或文本。 – balexandre