Мне нужно сохранить значение для всего моего веб-сайта, есть ли способ сохранить его в глобальной переменной на стороне сервера, например, ViewData, или лучше сохранить его в файле cookie?
Эти данные задаются с помощью выпадающего списка и кэшируются в контроллере.
Спасибо.
Ответ 1 · рейтинг 3 · Display Name
Можно также использовать сеанс следующим образом:
Session["MyKey"] = "MyValue";
и получение следующим образом:
var myVar = (string)Session["MyKey"];
если это значение пользователя.
Надеюсь, это поможет.
Ответ 2 · рейтинг 4 · Darin Dimitrov
Вы можете сохранить его в состоянии приложения:
public ActionResult Foo()
{
HttpContext.Application["someKey"] = "some value";
...
}
а затем позже прочитал из него:
string value = (string)HttpContext.Application["someKey"];
Значения, хранящиеся в состоянии приложения, являются общими для всех пользователей веб-сайта.
Если вам нужно хранить данные, специфичные для пользователя, вы можете использовать сеанс или файлы cookie в зависимости от того, являются ли они конфиденциальными данными или нет.
Ответ 3 · рейтинг 4 · Community
На странице 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";
}
Ответ 4 · рейтинг 4 · Ryan McDonough
Сессия подойдет, если вы хотите изменить значение, если значение будет статическим и известно до того, как приложение загрузит какие-либо данные, вы можете сохранить его в Web.config и ссылаться на него оттуда.
Такие как:
<appSettings>
<add key="MyStaticItem" value="Lulz" />
</appSettings>
Итак, если вы хотите восстановить эту строку, вы можете сделать:
Meh = ConfigurationManager.AppSettings["MyStaticItem"]
Meh будет Lulz