Я пытаюсь передать мой UserModel для каждого представления, чтобы он мог отображать сверху текущую пользовательскую информацию.Ввод модели во все виды
Это мой BaseViewModel:
public class BaseViewModel
{
public UserModel currentUser { get; set; }
}
BaseController:
public class BaseController : Controller
{
protected override void OnActionExecuted(ActionExecutedContext filterContext)
{
UserRepository userRep = new UserRepository();
BaseViewModel model = new BaseViewModel
{
currentUser = userRep.getCurrentUser()
};
base.OnActionExecuted(filterContext);
}
}
HomeController: (по умолчанию)
public class HomeController : BaseController
{
public ActionResult Index()
{
ListRepository listRep = new ListRepository();
return View(listRep.GetAllLists());//returns IEnumerable<ListModel>
}
}
Мой общий _layout.cshtml:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>@ViewBag.Title - My ASP.NET Application</title>
@Styles.Render("~/Public/css")
</head>
<body>
<header>
@Html.Partial("_Header")
</header>
@RenderBody()
</body>
</html>
и, наконец, мой _Header.cshtml:
<div id="logo">
<h1>Hello @Model.currentUser.username</ h1 >
</div>
Но я получаю сообщение об ошибке, когда я запускаю его:
«System.Collections.Generic.List» не содержит определения для «currentUser»
Я думал, что мой BaseViewModel
всегда получить добавляется
Должен ли я создать новый контроллер или добавить его в существующий? Кроме того, несвязанный, возможно ли вернуть другое частичное представление в зависимости от того, зарегистрирован пользователь или нет? – Cornwell
Лично я хотел бы иметь его в отдельном контроллере (возможно, 'UserController'), предполагая, что вы будете использовать это частичное в нескольких представлениях, связанных с несколькими контроллерами. –
И вы всегда можете проверить, проверен ли запрос, и использовать' return PartialView («abc «, model);' или 'return PartialView (« xyz », model);' (и даже модели могут быть разными) –