Как читать параметры ключа APP в web.config в разметке HTML

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

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

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

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

Спасибо

Ответы

Ответ 1

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

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

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

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

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

Если вы можете не делать:

<asp:Label runat="server" ... Text="<%=ConfigurationManager.AppSettings["MyAttribute"]%>" />

Ответ 2

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

<%$ AppSettings: MyAttribute %>

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

В то время как

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

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

так

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

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

Ответ 3

Вы можете использовать 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>

Ответ 4

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

Ответ 5

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

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

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

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

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

Ответ 6

Используя обычный js, вы можете использовать это в вашем layout.htmlcs, в начале:

  @{

        <script>
            sessionStorage.setItem("ProductionHostURL", '@System.Configuration.ConfigurationManager.AppSettings["ProductionHostURL"]');
        </script>

}
<!DOCTYPE html>

Затем в вашем основном js файле layout.htmlcs вы можете использовать этот метод, подобный этому:

var urlBaseProduction;
var urlBaseDevelopment;

    $(document).ready(function () {
      configureHostEnvironment()
     ....
    }

В этом методе настройте переменные для использования в производстве и разработке, например:

function configureHostEnvironment(){

    HOST = sessionStorage.getItem("ProductionHostURL")
    if (HOST.length <= 0) {
        alert("Host not configured correctly")
    } else {
        urlBaseProduction= host + '/api/';
        urlBaseDevelopment= host + port + '/api/';
    }
}

Если у вас есть предложение или усовершенствование этого метода, пожалуйста, прокомментируйте.