2011-08-04 35 views
0

我有一個自定義的ASP.NET用戶控件在代碼隱藏中完全實現。該控制裝置具有一個字符串屬性和它的聲明標記看起來是這樣的:爲什麼ASP.NET用戶控件的databound屬性只能在沒有引號的情況下工作?

<uc:MyControl ImageUrl="/Content/images/" runat="server" /> 

最有可能的實際申報將使用數據綁定語法是這樣的:

<uc:MyControl ImageUrl="<%# PageInfo.ImageUrl %>" runat="server" /> 

現在,這裏是屬於我的問題奇數部分。如果我使用上述語法,那麼數據綁定不起作用,並且運行時ImageUrl的值是引號之間的任何字符串字面值。但是,如果我刪除了雙引號,它按預期工作:既雙和單引號發生

<uc:MyControl ImageUrl=<%# PageInfo.ImageUrl %> runat="server" /> 

同樣的行爲。我對此感到困惑,雖然代碼工作,但它並不是最理想的,因爲將值放在引號中是規範,使數據綁定工作的方法顯然是非正統的。

任何人有任何想法,爲什麼這隻能工作沒有引號?

+0

PageInfo.ImageUrl是您的自定義控件的數據綁定? – TheGeekYouNeed

+0

PageInfo.ImageUrl是一個任意屬性,我綁定到示例中的控件的ImageUrl屬性。我可以使用其他任何東西(例如Request.QueryString),並且行爲是相同的。 –

+0

你試過這個嗎? ImageUrl =「<%= PageInfo.ImageUrl%>」runat =「server」/> - 或者在代碼後面設置屬性如何?給你的UC:MyControl一個ID,這樣你可以? – TheGeekYouNeed

回答

0

我發現這個問題......這是與文件(可能是編碼,但不知道)有關。一時興起,我將代碼複製到一個新文件並刪除了原文。現在數據綁定可以像報價一樣工作。

相關問題