Asp.net

如何使我的 ASP.NET 伺服器控制項將嵌入的程式碼塊作為屬性值?

  • May 19, 2009

我有一個具有 Title 屬性的自定義伺服器控制項。使用控制項時,我想在 aspx 頁面中設置標題的值,如下所示:

<cc1:customControl runat="server" Title='<%= PagePropertyValue%>' >
more content
</cc1:customControl>

但是,當我這樣做時,我得到的是確切的字元串 <%= PagePropertyValue%> 正在顯示,而不是我希望看到的屬性值。

所以在嘗試了數據綁定表達式之後(如下所示)。我沒有得到看起來很糟糕的字元串文字,但我也沒有得到任何其他東西。

&lt;cc1:customControl runat="server" Title='&lt;%# PagePropertyValue%&gt;' &gt;
more content
&lt;/cc1:customControl&gt;

我需要對我的自定義控制項做些什麼來獲取這種值?或者我需要對頁面做些什麼。

你不能。<%= %> 將字元串直接寫入響應流,這發生在構造伺服器控制項之後。請參閱此文章以獲取解釋。

因此,正如 Zachary 所建議的那樣,它要麼是程式碼隱藏,要麼是 <%# + 數據綁定。

作為我自己的問題的後續,我發現我真正想要的是使用 <%$ 語法使用 ASP.NET 表達式,因為我想要做的是放入本地化的內容中。

這可以在伺服器控制端顯然沒有額外處理的情況下完成。

&lt;cc1:customControl runat="server" Title='&lt;%$ Resouces: ResourceFile, ContentKey %&gt;' &gt;
more content and controls
&lt;/cc1:customControl&gt;

這工作得很好。

引用自:https://stackoverflow.com/questions/387167