Совместное использование объекта в ASP.NET MVC3
У меня есть веб-приложение ASP.NET MVC3 с C# и Razor.
Через форму в представлении я получаю Context.User.Identity.Name
представлены в метод действия в контроллере A.
Я хотел бы иметь эту переменную в приложении (между несколькими контроллерами). Теперь я просто могу назначить его глобальной переменной _UserName в контроллере A, но, конечно, он недоступен в контроллере B.
Возможно ли это сделать?
Спасибо
Francesco
3 ответа
Если вы обращаетесь к этому на любом контроллере, вы должны использовать HttpContext.User.Identity в ваших методах контроллера - он будет доступен там. Нет необходимости хранить в сессии.
Создайте родительский контроллер, от которого наследуются все ваши контроллеры, и установите переменную там. Оттуда вы можете сделать несколько вещей - обернуть это в модель представления, поместить некоторые пользовательские данные в ViewBag и т. Д.
public class UserController : Controller
{
// create your own User class with as many properties as you need
protected User user { get; set; }
public UserController()
{
user = // get user from db, wherever
}
}
Тогда просто наследуй от UserController
public class ControllerA : UserController
{
public ActionResult DoSomething()
{
user.Property = 123;
}
}
Вы должны изучить кеширование и, возможно, использовать эту информацию в пользовательском сеансе.
Проверьте этот вопрос.