我正在设计一个 Web 应用程序。该应用程序最初不是由我编写的,我正在努力在设计时不修改任何控制器或模型。
目前,该应用程序是一个标题,应该显示您当前正在查看的项目的名称以及项目的完成日期。这个头是布局调用的局部视图,也是局部视图。因为标题是一个单独的视图,然后是项目详细信息视图,所以我很难将这些信息提取出来。
我尝试将控制器的@model 引用添加到 Header,但收到错误,我传递了错误的类型(请参阅下面的错误)。
我还尝试将模型传递给 Layout 视图中的 @Html.Partial 调用,该调用调用标题(也是this)。一般来说,我尝试过的所有事情都会让我遇到这个错误:
The model item passed into the dictionary is of type 'System.Collections.Generic.List`1[OST.Pride.Business.Models.Project]', but this dictionary requires a model item of type 'OST.Pride.Web.Models.AdminProjectUserEdit'.
我不能只将标题移动到项目详细信息视图,因为标题是整个应用程序布局的一部分。我会感谢任何人的帮助,我已经坚持了一段时间。
在布局中调用标题
<header id="main-header">
@Html.Partial("LayoutTemplates/Header")
</header>
标题:
<div class="navbar" style="padding-top:15px;">
<div class="navbar-inner">
<div class="container" style="width:auto;">
<div class="project-navbar">
<h3><ul class="nav pull-left">Customer: TEST </ul></h3>
<h3><ul class="nav" style="padding-left:40%;">Project: //This is where the project name needs to be//</ul></h3>
<h3><ul class="nav pull-right" align="center">Project Completion Date: //Again, I need to pull the completion date here// </ul></h3>
</div>
</div>
</div>
</div>
控制器方法
public ActionResult Details(int? projectid, int? ProjectID, int? projectuserid) // based on the project id, populates the view with the roles, project users, and the roles for the screen.
{
var model = new Models.AdminProjectUserEdit();
model.Project = storeDB.Projects.Find(ProjectID);
model.Users = storeDB.Users.ToList();
model.Surveys = storeDB.Surveys.Include("SurveyType").ToList();
model.ProjectUsers = storeDB.ProjectUsers.Include("Project").Include("User").Where(x => x.ProjectID == projectid).ToList();
return View(model);
}