私はWebアプリケーションの設計に取り組んでいます。このアプリケーションは元々私がコーディングしたものではなく、設計作業中にコントローラーやモデルを変更しないように最善を尽くしています。
現時点では、アプリケーションは、現在表示しているプロジェクトの名前とプロジェクトの完了日を表示することになっているヘッダーです。このヘッダーは、レイアウトによって呼び出される部分ビューであり、部分ビューでもあります。ヘッダーはプロジェクト詳細ビューとは別のビューであるため、この情報を引き出すのに非常に苦労しています。
コントローラへの@model参照をヘッダーに追加しようとしましたが、間違ったタイプを渡したというエラーが発生しました(以下のエラーを参照)。
また、ヘッダー(これも)を呼び出すレイアウトビュー内の@Html.Partial呼び出しにモデルを渡そうとしました。一般的に、私が試したすべてのことで、このエラーが発生します。
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);
}