Я хочу использовать сессию в конструкторе контроллера mvc asp.net - PullRequest
0 голосов
/ 14 мая 2011

Я новичок в Mvc.

Извините за мой английский. ^^

У меня есть вопрос о сеансе asp.net MVC в контроллере.

Сценарий, который я хочу сделать, выглядит следующим образом ..

  1. Прежде всего, мои обстоятельства развития - это создание сущностей и mvc3.

  2. Когда кто-то вошел в каждый из них, имеет разные базы данных. Итак, у каждого есть своя база данных.

  3. Итак, у каждого человека есть свое собственное значение сеанса, которое является строкой соединения с базой данных. Пока все хорошо.

  4. У меня есть простой репозиторий баз данных, и в каждом репозитории конструктор может изменить соединение с базой данных.

  5. В контроллере, который вызывает класс репозитория, мне нужно значение сеанса. Но, как я знаю, конструкция контроллера не может сохранять ценность сеанса. право?

  6. Я хочу вашего хорошего совета. Заранее спасибо.

Примеры кода приведены ниже:

public class MasterRepository 
{
    DBEntities _db;

    public MasterRepository(string con)
    {
        _db = new DBEntities(con);
    }

}

public class TestController : Controller
{

    private string con;

    MasterRepository _db;

    public TestController()
    {
    _db = new MasterRepository(Session["conn"].ToString()); //  Session is null I want to solve this Part...
    }

    public ActionResult Index()
    {

        string con = Session["conn"].ToString(); // Session is assigned.

        return View();
    }


}     

Ответы [ 2 ]

0 голосов
/ 14 мая 2011
0 голосов
/ 14 мая 2011

Я думаю, что вы пропустили "сервисную" часть шаблона контроллера - службы - хранилища:

http://weblogs.asp.net/fredriknormen/archive/2008/04/24/what-purpose-does-the-repository-pattern-have.aspx

Но когда вы пойдете по этому пути, вам, вероятно, также понадобитсядля изучения IoC.

Тогда ваш код будет выглядеть примерно так:

public class MasterRepository 
{
    public Foo GetAllFoo()
    {
        return ObjectContextManager.GetObjectContext().AsQueryable().ToList();
    }  
}

public class MasterService 
{
    MasterRepository _repository;   
    public MasterService(MasterRepository repository) // use IoC
    {
        _repository = repository;
    }
    public Foo GetAllFoo()
    {
        return _repository.GetAllFoo();
    }    
}    

public class TestController : Controller
{  
    MasterService _service;
    public TestController(MasterService service) // use IoC
    {
        _service = service;
    }

    public ActionResult Index()
    {    
        var model _service.GetAllFoo();   
        return View(model);
    }       
}     
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...