【发布时间】:2015-06-10 16:02:01
【问题描述】:
我想使用 2 个模型。第一个在Index.cshtml页面上,第二个在_Layout.cshtml页面上
在包含public ActionResult Index(){...} 操作的控制器中,我声明了一些值并将其返回给 View()。像这样:
public ActionResult Index()
{
HomePageViewModel model = new HomePageViewModel();
// do something...
return View(model);
}
在MyProjectName.Models 中,我编写了一些类来检查登录帐户并将其放在页面_Layout.cshtml 上。像这样:
在页面_Layout.cshtml:
@using MyProjectName.Models
@model MyProjectName.Models.LoginModel
@if (Model.LoginAccount != null)
{
foreach(Account acc in Model.LoginAccount)
{
@Html.ActionLink(@acc.Email, "SomeAction", "SomeController", null, new { id = "loginEmail" })
@Html.ActionLink("Logout", "SomeAction", "SomeController", null, new { id = "logout" })
}
}
_Layout.cshtml 页面上的代码不起作用。它说:我返回了一个模型(HomePageViewModel model),但是我想渲染的一些值是从MyProjectName.Models.LoginModel引用的
主要要求是:第一个模型用于在页面Index.cshtml上显示内容,第二个模型用于检查用户登录(在页面_Layout.cshtml上)。
你能告诉我怎么做吗?谢谢!
【问题讨论】:
-
对于您的特殊情况
Action(controller:login, action:ChildActionShowLinks ...)可能会更好地封装视图...有关更多建议/讨论,请参阅stackoverflow.com/questions/4154407/…。 -
创建一个包含两个模型的连接视图模型,然后将其传递给您的控制器?
-
@DarkBobG 我不认为它可以解决我的问题。因为如果您创建一个包含 2 个
child models的parent model,它应该可以工作。但是如果我从另一个操作中引用_Layout.cshtml会发生什么? -
点赞:
public ActionResult AnotherAction() { OtherModel model = new OtherModel(); return View(model); }
标签: c# razor asp.net-mvc-5