Без дополнительной информации в вашей бизнес-логике я мог бы быть вне базы здесь ... но ... Кажется, что настройка любых данных ViewBag в представлении - это Anti-Pattern.
К тому времени, когда View получает визуализацию, поскольку это часть жизненного цикла страницы, ваш ViewModel
должен иметь все необходимое, а View и Masterpage должны просто потреблять данные, а не генерировать их.
Я также являюсь членом FIRM в настройке ВСЕГО, относящегося к ViewModel
, а НЕ в ViewBag (это личное предпочтение, но широко распространенное).
Если вы опишете свой конкретный сценарий немного дальше, возможно, я смогу помочь вам придумать лучший образец для подражания.
public class LayoutViewModel
{
public bool UseFacebookConnect { get; set; }
}
public class SomeViewModel : LayoutViewModel
{
public string SomeData { get; set; }
}
public class SomeController : Controller
{
public ActionResult Index()
{
var someViewModel = new SomeViewModel
{
SomeData = "",
UseFacebookConnect = true
};
return View(someViewModel);
}
Вам может понадобиться ** [ TempData] (http://stackoverflow.com/a/17199709/2015869) **. –
Причина, по которой нельзя использовать 'ViewBag', заключается в том, что когда вы добираетесь до страницы макета, это время перенаправляется с моего запроса на просмотр, что означает второй запрос. –