2011-08-09 48 views
2

我想改變一些ASP.NET代碼來使用我們在C#代碼中使用的強類型轉換。目前,代碼如下所示:如何在服務器標籤中使用強類型資源?

<asp:HyperLink runat="server" Text='<%$ Resources:Blah1,Blah2 %>' /> 

我想它看起來就像這樣:

<asp:HyperLink runat="server" Text='<% Translations.Blah1.Blah2 %>' NavigateUrl="#" /> 

的原因是,我們在第一種情況下使用自定義的供應商,它不」用aspnet_compiler很好,我們試圖消除aspx/ascx文件不能編譯的問題。

不過,如果我更改代碼(如上圖所示),我得到這個錯誤:

Server tags cannot contain <% ... %> constructs. 

有什麼辦法來實現這一目標,而不必使用<%#數據綁定%>標籤,然後確保數據綁定被調用?使用<%= %>也不起作用(大概是因爲它直接寫入響應流,但我需要讓它設置屬性)。

編輯:我需要這個編程跨越成千上萬的文件,所以將它移動到代碼隱藏文件是不是一種選擇:(

回答

0

我能找到的唯一的解決辦法是把打開/關閉標籤之間的資源這只是一些控制工作。 ,所以其他人將需要改變。

<asp:HyperLink runat="server" NavigateUrl="#"><% Translations.Blah1.Blah2 %></asp:HyperLink> 
+0

您的答案仍然正確嗎?如果你能夠使用標籤的屬性而不是內部html來解析,我正在做類似和好奇的事情。 – MADCookie

+0

您是否嘗試過使用像 MADCookie

+0

@MADCookie這樣的隱式資源表達式可悲的是,我們目前使用「inner HTML「(內容),並且這不起作用,從代碼中設置它們(雖然我們不喜歡這樣)。我們試圖避免meta:ResourceKey,原因與<%$ Resources>相同。 –

0

給超鏈接的ID,並設置從文本屬性。代碼隱藏

額外的好處:你從演示分開你的邏輯和填補了各自的價值

+0

不幸的是,我必須這樣做編程(跨文件十萬),所以這不是一個合適的選擇:-( –

+0

什麼不編程這個代碼?我發現這樣會花費你一些時間,但這是一個更好的解決方案。 我甚至不知道這是否可能,因爲您使用服務器端標記(通過使用runat)。我在嘗試使用代碼塊來填充我的鏈接和腳本包含之前,遇到了這個問題。它適用於鏈接引用,但不適用於腳本引用。 – Rickjaah

+0

我必須在數千個文件中以編程方式進行這些更改。打開並解析代碼隱藏文件以注入在正確的位置(並在正確的時間)執行此操作的代碼不是一項簡單的任務。 –

相關問題