0

だから私は次のようなものを持っています:プロジェクトのどこでも使用される静的Configクラス、boolプロパティを持つPropertyとしましょう。したがって、aspx マークアップでこのプロパティを設定する方法を見つけたいと思います。

<asp:Column ..... Visible='<%: Config.Property %>' > 

動作しません。私も試しました:

'<%# Config.Property %>'
'<%$ Config.Property %>'
'<%= Config.Property %>'
'<% Config.Property %>'

上記はすべて「'」なしです。それを解決する方法はありますか?コードビハインドに設定したくないのですが、そうしない理由があります。

4

1 に答える 1

1

問題が発生している理由は、サーバー コントロールの各プロパティの文字列値が評価され、目的の型に解析されるためです。したがって、プロパティを「True」または「true」に設定できますが、評価する必要がある式には設定できません。これを回避するには、次のようなデータバインディング構文を使用する必要があります。

<asp:Column ..... Visible="<%# Config.Property %>" >

データバインディング式を使用する際の問題は、コントロール自体またはページ自体で DataBind() メソッドを実行する必要があることです。ページ自体でそれを呼び出すと、後でページの別の場所でバインディング コントロールを使用することにした場合に、悪影響が生じる可能性があります。したがって、これを行うには、次のように DataBind() メソッドを実行する「偽のメタ タグ」を追加します。

<asp:Column ..... Visible="<%# Config.Property %>" meta:bind='<% DataBind(); %>' >

と呼ぶ必要はありませんbind。メタ タグには、任意の名前を付けることができます。これにより、ASP.NET エンジンはこのコントロールに対して DataBind を強制的に実行し、Config.Property式を評価して解析する必要があります。

于 2014-10-01T16:54:26.653 に答える