ASP.Net Global / Page Scope Переменные - PullRequest
1 голос
/ 28 февраля 2012

Я нахожусь в процессе преобразования классического приложения ASP в ASP.Net и наткнулся на кирпичную стену, связанную с глобальными переменными (или переменными области видимости страницы). Как примечание, приложение не является типичным в том смысле, что оно не создает HTML. Вместо этого он получает запросы AJAX и возвращает строки JSON, поэтому он не использует много функций asp.net. Впервые за долгое время поиск в Google не привел меня к ответу!

В коде asp мы используем ряд глобальных переменных, определенных в variables.asp, например:

<%
dim lId
%>

Этот asp затем включается во все страницы. Существует ряд других включаемых файлов, которые ссылаются на эти переменные, а также на сами страницы.

Для asp.net ближе всего я могу найти переменные .aspx:

<SCRIPT LANGUAGE="VBScript" RunAt="Server">
shared dim lId as integer
</SCRIPT>

Однако я понимаю, что эта переменная гораздо более «глобальна», чем она работала в .asp, и что она может вызывать проблемы с многопоточностью и т. Д., И что они эффективно работают подобно использованию объекта Application (), а это не то, что Я после.

По сути, мне нужно иметь возможность объявлять переменную, на которую можно ссылаться в других включениях и на базовой странице, чья область действия / время жизни только для обработки этой страницы.

На данном этапе единственное, что я могу придумать, - это использовать переменные сеанса и очищать их в конце каждой обработки, но я боюсь работы / проблем такого преобразования

Ответы [ 2 ]

0 голосов
/ 29 февраля 2012

Похоже, я мог бы сделать что-то вроде следующего:

shared dim gv as New GlobalVariables

public class GlobalVariables
    public property Id as integer
        Get
            Id = cint(HttpContext.Current.Items("id"))
        End Get
        set (ByVal aiValue as integer)
            HttpContext.Current.Items("id") = aiValue
        End Set
    end property
end class

Тогда, когда бы я ни ссылался на "lId", мне нужно заменить его на "gv.Id".

gv все еще будет глобальным, но, учитывая, что он просматривает current.items, у меня не должно быть проблем с потоками.

0 голосов
/ 28 февраля 2012

Вы можете создать класс в своем проекте asp.net для хранения этих статических переменных.Если они являются параметрами конфигурации, они должны быть указаны в файле web.config.

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