Как прочитать настройки ключа приложения web.config в HTML-разметке - PullRequest
14 голосов
/ 30 октября 2010

У меня есть сайт ASP.NET, который использует сторонний элемент управления ActiveX. Я должен передать несколько параметров тегу OBJECT на странице HTML. Если я жестко закодировал эти параметры в HTML, все работает.

Я бы хотел разместить параметры в моем файле web.config с парами «ключ / значение» в настройках приложения.

Моя проблема в том, что я не могу прочитать настройки ключа приложения в разметке HTML, чтобы успешно передать их в качестве параметров. Я могу читать их хорошо из кода на стороне сервера.

Как правильно читать эти настройки в разметке HTML на стороне клиента?

Спасибо

Ответы [ 5 ]

29 голосов
/ 30 октября 2010

В дополнение к использованию <%=ConfigurationManager.AppSettings["MyAttribute"]%>, как уже отмечали другие, вы также можете использовать построителей выражений . Синтаксис немного отличается. Вместо <%=...%> вы используете <%$ AppSettings: MyAttribute %>, вот так:

<object id="myObjectID attr="<%$ AppSettings: MyAttribute %>" ...>

Если вы просто выгружаете значение appSettings непосредственно в статический HTML (как я полагаю, вы в этом примере), эти два подхода идентичны для всех практических целей.

Что приятно в построителях выражений, так это то, что вы можете использовать их для декларативного назначения значений appSettings свойствам веб-элемента управления, что вы не можете *1012* делать с синтаксисом <%=...%>. То есть с помощью построителей выражений вы можете сделать что-то вроде:

<asp:Label runat="server" ... Text="<%$ AppSettings: MyAttribute %>" />

В то время как вы могли бы не сделать:

<asp:Label runat="server" ... Text="<%=ConfigurationManager.AppSettings["MyAttribute"]%>" />
9 голосов
/ 03 мая 2013

Следующий код:

<%$ AppSettings: MyAttribute %>

несовместим с общей разметкой HTML и функцией JavaScript!Это хорошо для тега asp.

Принимая во внимание, что

<%=ConfigurationManager.AppSettings("MyAttribute")%>

действительно работает в общей разметке HTML.

, поэтому

<%=ConfigurationManager.AppSettings("MyAttribute")%>

моя рекомендация!

3 голосов
/ 30 октября 2010

Вы можете использовать ConfigurationManager на вашей странице ASPX. Затем вы можете добавить в свой OBJECT параметры тега:

Web.Config

</configuration>
    <appSettings>
        <add key="Setting" value="Value"/>
    <appSettings>
</configuration>

ASPX

<object>
    <param name="Setting" value="<%= System.Configuration.ConfigurationManager.AppSettings["Setting"] %>" />
</object>
0 голосов
/ 30 октября 2010

У вас есть несколько вариантов. Если вы добавите атрибут runat="server" к своему тегу объекта, вы сможете получить к нему доступ из своего кода, используя его идентификатор, и добавить атрибуты таким образом:

myObjectID.Attributes.Add("attrName", "value")

Если вы не хотите этого делать, вы можете использовать встроенные литералы:

<object id="myObjectID attr="<%= ConfigurationManager.AppSettings("MyAttribute") %>" ...>

В любом случае, работа должна быть выполнена.

0 голосов
/ 30 октября 2010

Я предлагаю вам динамически генерировать тег OBJECT во время выполнения с сервера. Таким образом, вы можете ввести любые параметры, которые вы читаете из файла web.config.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...