私は今では完全に軌道から外れているかもしれないので、誰かが私を助けることができるようにここで質問します.
私がやりたいことは、applicationSettings 領域に保存されている web.config の値を aspx マークアップに挿入することです。具体的には、構成から URL を読み取りたいです。これは私が使用する configSection セットアップです
<configSections>
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=123456">
<section name="MyApp.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=12345" requirePermission="false" />
</configSections>
そのファイルの後半には、次のような実際の設定があります。
<applicationSettings>
<MyApp.Properties.Settings>
<setting name="ImagesUrl" serializeAs="String">
<value>http://resources/images/</value>
</setting>
今、次のようにマークアップで上記の値を参照したいと思います。
<asp:Image ID="Image1" runat="server" ImageUrl="<%$AppSettings:ImagesUrl%>/Image1.jpg
<%$ AppSettings: ImagesUrl %> という表現があることは知っていますが、web.config の appsettings 部分ではなく、configSection を使用しています。
編集:文字列を個々の画像名と連結する必要があるため、ExpressionBuilderでしかできないと思います。それを反映するために上記の例を変更しました。
config セクションにアクセスするための以下の Bert Smith Code Solution が気に入っていますが、それを式ビルダーに入れる必要があるだけです。構成マネージャーを呼び出す場所から GetCodeExpression メソッドをオーバーライドすることに行き詰まっていますが、パラメーターの式を作成する方法がわかりません。
public class SettingsExpressionBuilder: ExpressionBuilder
{
public override CodeExpression GetCodeExpression(BoundPropertyEntry entry, object parsedData, ExpressionBuilderContext context)
{
return ??
}
編集
結果は次のようになり、画像だけでなく、あらゆる種類のファイルで機能します。
<asp:ScriptReference Path='<%$Code:GetAppSetting("ResourcesUrl","JS/jquery/jquery.jqplot.js")%>'
Microsoft の例を使用して、式ビルダーから任意の種類のコードを返しました。
新しい CodeSnippetExpression(entry.Expression) を返します。
GetAppSetting は、カスタム Page クラスのメソッドです。