Возможно, я уже совсем не в курсе, поэтому я просто спрошу это здесь, чтобы кто-нибудь мог мне помочь.
Что я хочу сделать, это вставить значение из моего файла web.config, хранящегося в области applicationSettings, в мою разметку 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%>, но я не использую часть 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 ??
}
EDIT
Результат выглядит следующим образом и работает для всех видов файлов, а не только для изображений:
<asp:ScriptReference Path='<%$Code:GetAppSetting("ResourcesUrl","JS/jquery/jquery.jqplot.js")%>'
, и я просто использовал пример от Microsoft для возврата любого вида кода из построителя выражений:
вернуть новое CodeSnippetExpression (entry.Expression);
И GetAppSetting - это метод в моем классе пользовательской страницы.