ASP.NET: переменная, доступ к которой может получить весь сайт

Я новичок в ASP.NET, я пытаюсь настроить веб-сайт в Visual Studio с помощью С#.

Мой фон находится в PHP. На этом языке, если я хочу, чтобы переменная была доступна на каждой странице, просто поместите ее в файл include.

Есть ли что-то похожее на С# и ASP.NET? Существует страница site.master, но я не уверен, как получить доступ к этим переменным из содержимого страницы. Спасибо заранее.

Ответ 1

Здесь у вас есть несколько вариантов:


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

Использование:

Session["MyVariable"] = 5;
int myVariable = (int)Session["MyVariable"]; //Don't forget to check for null references!

Вы можете установить переменную сеанса пользователя в файле global.asax в обработчике событий session_start, если это необходимо.


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

Application["MyVariable"] = 5;
int myVariable = (int)Application["MyVariable"]; //Don't forget to check for null references!

Вы можете установить переменную приложения в файле global.asax в обработчике события application_start, если это необходимо.


Web.Config Вероятно, это предпочтительный способ хранения констант в вашем приложении, поскольку они хранятся как "Параметры приложения" и изменены в файле web.config по мере необходимости без перекомпиляции вашего сайта. настройки приложения хранятся в области <appsettings> вашего файла, используя этот синтаксис:

<appSettings>
  <add key="MyVariable" value="5" />
</appSettings>

Значения Web.config должны считаться доступными только для чтения в вашем коде, и их можно просто получить с помощью этого кода на ваших страницах:

int myVariable = (int)System.Configuration.ConfigurationSettings.AppSettings["MyVariable"];

Статические переменные Кроме того, вы можете просто создать класс, содержащий статическое свойство для хранения вашей переменной следующим образом:

public class SiteVariables
{
    private static _myVariable = 0;
    public static int MyVariable
    {
        get { return _myVariable; }
        set { _myVariable = value; }
    }
}

И затем войдите в него так:

int myVar = SiteVariables.MyVariable;

Я действительно использую комбинацию последних двух решений в моем коде. Я сохраню свои настройки в своем файле web.config, а затем создам класс с именем ApplicationSettings, который читает значения из web.config при необходимости с использованием статических свойств.

Надеюсь, что это поможет

Ответ 2

Вы можете создать статический класс со статическим членом:

public static MyClass
{
  public static MyVariable { get; set; }
}

Затем из любой точки сайта вы можете вызвать MyClass.MyVariable, чтобы получить или установить значение.

Помните о значительной разнице между этим и PHP. В PHP вы используете скрипты, и вы включаете другие скрипты, чтобы сделать один большой script. В ASP.NET вы компилируете код в сборки. Шаблоны разные.

Ответ 3

Действительно, просто чтобы что-то вроде глобальных переменных php-переменных статические классы могли вам помочь. Но действительно ли это то, что ты хочешь? Поскольку известно, что глобальные переменные являются более сложными, проверяемыми и т.д.

Возможно, вы хотите "поместить" данные где-нибудь и "взять" его где-то еще.

В .NET есть много способов сделать это в .NET.

Вы можете использовать SessionState для хранения чего-либо во время сеанса с пользователем. http://msdn.microsoft.com/en-us/library/ms178581.aspx

Вы можете использовать ViewState как краткосрочный... http://msdn.microsoft.com/en-us/library/ms972976.aspx

Вы можете использовать настройки для настройки переменных в web.config
http://msdn.microsoft.com/en-us/library/b5ysx397.aspx

Вы можете использовать Профили, чтобы хранить что-то, связанное с пользователем
http://msdn.microsoft.com/en-us/library/2y3fs9xs.aspx

Вы можете использовать приложение, чтобы хранить что-то более глобально
http://msdn.microsoft.com/en-us/library/ms178594.aspx

И есть еще...
Относитесь к этому сообщению как к добавлению ссылок к записи Karl Nicoll.

Ответ 4

Вы можете получить доступ к свойству (или полю или методу) на главной странице с помощью свойства "Мастер" на странице вашего контента, которое дает вам ссылку на главную страницу. Вам нужно будет придать его типу, который поддерживает свойство сначала:

((Site)Master).MyVariable

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

Ответ 5

Если это параметр конфигурации, используйте раздел настроек файла приложения web.config

Если это переменная сеанса, есть объект сеанса

И вы также можете создать статический класс с некоторыми открытыми членами.