ASP.NET MVC C# глобальная переменная
Мне нужно сохранить значение для всего моего веб-сайта. Есть ли способ сохранить его в глобальной переменной на стороне сервера, например, ViewData, или лучше сохранить его в файле cookie?
Эти данные устанавливаются с помощью выпадающего списка и отслеживаются в контроллере.
Благодарю.
4 ответа
Также можно использовать сессию так:
Session["MyKey"] = "MyValue";
и получить как это:
var myVar = (string)Session["MyKey"];
если это на пользовательское значение.
Надеюсь, это поможет.
На странице Global.asax
void Application_Start(object sender, EventArgs e)
{
// set your variable here
Application["myVar"] = "some value";
}
Внутри действия
public ActionResult MyAction()
{
// get value
string value = Application["myValue"].ToString();
// change value
Application["myValue"] = "some NEW value";
}
Если вы хотите изменить значение, используйте сессию, если значение будет статическим и известно до того, как приложение загрузит какие-либо данные, вы можете сохранить их в файле Web.config и ссылаться на них оттуда.
Такие как:
<appSettings>
<add key="MyStaticItem" value="Lulz" />
</appSettings>
Итак, если вы хотите получить эту строку, вы можете сделать:
Meh = ConfigurationManager.AppSettings["MyStaticItem"]
Meh
было бы Lulz
Вы можете сохранить его в состоянии приложения:
public ActionResult Foo()
{
HttpContext.Application["someKey"] = "some value";
...
}
а потом прочитайте оттуда:
string value = (string)HttpContext.Application["someKey"];
Значения, хранящиеся в состоянии приложения, являются общими для всех пользователей сайта.
Если вам нужно хранить данные, специфичные для пользователя, вы можете использовать сеанс или файлы cookie в зависимости от того, являются ли они конфиденциальными данными или нет.