Возможно, я уже совсем сбился с пути, поэтому я просто спрошу это здесь, чтобы кто-нибудь мог мне помочь.
Что я хочу сделать, так это вставить значение из моего web.config, хранящегося в области applicationSettings, в мою разметку aspx. В частности, я хочу прочитать URL-адрес из config. Это настройка 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 %>, но я использую не часть appsettings в web.config, а configSection.
РЕДАКТИРОВАТЬ: я считаю, что могу сделать это только с помощью ExpressionBuilder, потому что мне нужно объединить строку с именем отдельного изображения. Я изменил приведенный выше пример, чтобы отразить это.
Мне нравится Bert Smith Code Solution ниже для доступа к разделу конфигурации, только мне нужно поместить его в построитель выражений. Я застрял в переопределении метода GetCodeExpression, из которого я вызывал бы Configuration Manager, но я не понимаю, как построить выражение с параметрами.
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.