Я разрабатываю веб-приложение ASP.NET MVC 3 с помощью Razor и С#.
Я только что обнаружил, что у меня есть некоторые проблемы с глобальными переменными, возможно потому, что я относительно новичок в MVC.
У меня есть контроллер с некоторыми глобальными переменными и методами действий. Я объявил глобальную переменную, чтобы позволить действительным методам манипулировать ею и отражать манипуляции ко всем методам действий. У меня есть следующая ситуация:
public class myController : Controller
{
private string _MyGlobalVariable;
public ActionResult Index()
{
_MyGlobalVariable = "Hello";
//other code
return View("MyView");
}
public ActionResult Print()
{
_MyGlobalVariable += "Print";
return View("PrintView", _MyGlobalVariable);
}
}
Метод действия Печать() вызывается с Html.ActionLink() из представления MyView.
Удивительно, что значение _MyGlobalVariable не сохраняется! Таким образом, значение _MyGlobalVariable перед командой _MyGlobalVariable += "Print"
равно нулю.
Я ошибаюсь? Как я могу сохранить значение глобальных переменных между вызовами в Views?
Спасибо
Франческо
PS: в моем конкретном случае глобальная переменная является Dictionary<K,V>
, но, я думаю, она не меняет логику.
PPS: Я знаю, что вы можете использовать ViewModels вместо глобальных переменных для передачи данных между методами действий, но в моем случае гораздо меньше кода, если я использую Dictionary<K,V>
, который обычно не переношу в ViewModels (я использую POCOs или Lists<T>
)