2 つのインデックス ビューを生成する 2 つのコントローラーがあります。私がやりたいのは、これらのビューをグローバル共有部分ビューとして使用することですが、これを機能させることはできません。
これが可能かどうかは誰にもわかりますか?
私のコントローラーコードは
public ActionResult Index()
{
var viewModel = (from P in db.Projects
join R in db.Reports on P.ProjectTitle equals R.ReportProjectID into ps
from R in ps.DefaultIfEmpty()
select new MyViewModel { Project = P, Report = R });
return View(viewModel);
}
私のViewModelコードは
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace MiLife2.ViewModels
{
public class MyViewModel
{
public Project Project { get; set; }
public Report Report { get; set; }
}
}
そして私の見解は
@model IQueryable<MiLife2.ViewModels.MyViewModel>
@{
ViewBag.Title = "Index";
}
enter code here
<h2>Index</h2>
<div>@Html.Partial("_Partial1")</div>
<p>
@Html.ActionLink("Create New", "Create")
</p>
<table>
<tr>
<th></th>
</tr>
@foreach (var item in Model)
{
<tr>
<td>@item.Project.ProjectTitle </td>
<td>@item.Project.ProjectCreatedByID</td>
<td>@item.Project.ProjectCreatedDate</td>
<td>@if (item.Report == null)
{
<text>No Reports</text>
}
else
{
@item.Report.Title;
}
</td>
<td>@if (item.Report == null)
{
<text> </text>
}
else
{
@item.Report.Description;
}</td>
<td>
@Html.ActionLink("Edit", "Edit", new { id=item.Project.ProjectID }) |
@Html.ActionLink("Details", "Details", new { id=item.Project.ProjectID }) |
@Html.ActionLink("Delete", "Delete", new { id=item.Project.ProjectID })
</td>
</tr>
}
</table>
部分ページを作成して上記のビューを貼り付けてから @HTML.Partial("_ProjPartial") を使用すると、エラーが発生します
ディクショナリに渡されるモデル アイテムのタイプは「System.Collections.Generic.List 1[MiLife2.Project]', but this dictionary requires a model item of type 'System.Linq.IQueryable
1[MiLife2.ViewModels.MyViewModel]」です。
これは、特定のコントローラー ビュー フォルダーの Index cshtml ページ内から @HTML.Partial("_ProjPartial") を使用した場合には発生しません。