2011-08-04 8 views
0

コードビハインドで完全に実装されたカスタムASP.NETユーザーコントロールがあります。コントロールは、1つの文字列プロパティを持ち、その宣言型のマークアップは次のようになります。ASP.NET usercontrolの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

私は問題を発見しました...それはファイルと関係していました(おそらくエンコードされていますが、わかりません)。気まぐれに、コードを新しいファイルにコピーして元のファイルを削除しました。これで、データバインディングは引用符で動作します。

関連する問題