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
Если это переменная сеанса, есть объект сеанса
И вы также можете создать статический класс с некоторыми открытыми членами.