Совместное использование объекта в ASP.NET MVC3 - PullRequest
2 голосов
/ 05 мая 2011

У меня есть веб-приложение ASP.NET MVC3 с C # и Razor.

Через форму в представлении я получаю Context.User.Identity.Name, отправленный методу действия в контроллере A .

Я хотел бы, чтобы эта переменная была доступна для всего приложения (между несколькими контроллерами). Теперь я могу назначить ее глобальной переменной _UserName в Controller A , но, конечно, она недоступна в Controller B .

Возможно ли это сделать?

Спасибо

Francesco

Ответы [ 3 ]

1 голос
/ 05 мая 2011

Если вы обращаетесь к этому на любом контроллере, вы должны использовать HttpContext.User.Identity в ваших методах контроллера - он будет доступен там. Нет необходимости хранить в сеансе.

1 голос
/ 05 мая 2011

Создайте родительский контроллер, от которого наследуются все ваши контроллеры, и установите переменную там. Оттуда вы можете сделать несколько вещей - обернуть это в модель представления, поместить некоторые пользовательские данные в 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;
    }
}
0 голосов
/ 05 мая 2011

Вы должны изучить кеширование и, возможно, использовать сеанс пользователей, чтобы сохранить эту информацию.

Проверьте этот вопрос.

...