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 в зависимости от того, являются ли они конфиденциальными данными или нет.

Другие вопросы по тегам