Какие соответствующие стандарты нарушает этот код? - PullRequest
0 голосов
/ 27 июля 2011

Что плохого в том, чтобы иметь частный объект ViewModel, чтобы все действия моего контроллера имели к нему доступ?

  • Я использую EF4, MVC3, DBContext, DBsets.

    public class MyController {
    
    private MyViewModel _myViewModel;
    
    public ActionResult Index(MyViewModel myViewModel){ <-- There is a model Binder making this work
    
    _myViewModel = myViewModel;
    
    return _myViewModel;
    }
    
    }
    

Ответы [ 2 ]

3 голосов
/ 27 июля 2011

Потому что каждый раз, когда вы вызываете действие контроллера, вы получаете другой экземпляр контроллера. Поэтому все, что вы могли сохранить в полях экземпляра этого контроллера из предыдущего действия, будет потеряно при последующих действиях. Вот почему в ASP.NET MVC у вас есть такие понятия, как Session, Application Application, TempData, Cookies, Cache, ... вы называете это.

1 голос
/ 27 июля 2011

С одной стороны, делая ViewModel членом вашего контроллера, вы действительно ограничиваете возможности, которые вы можете выполнять в многопоточной среде.Если на одном контроллере вызывается более 1 вашего Действия, вы можете столкнуться с условием гонки, чтобы определить, какая из переданных моделей представления используется для каждого представления.

Редактировать: каждый раз вы получаете новый экземпляр контроллера, поэтому этого не произойдет.Тем не менее, это еще что-то, чтобы иметь в виду для других классов, которые используют частные члены

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...