ASP.NET MVCプロジェクトをまっすぐなビューとモデルからViewModel中間層を使用するように変更しようとしています。基本的には、人に0以上のというイベントが関連付けられています。が関連付けられています。 Person Details イベントのすべてを表示している詳細ページを表示したいので、私はViewModelに変更します。IEnumerableを含めるためにViewModelとPartial Pageを構成する方法
私は人モデルクラスとイベントのための1つを持っており、これが私のViewModelです:
public class PersonEventViewModel
{
public PersonEventViewModel(Person person)
{
Person = person;
}
public Person Person { get; set; }
public IEnumerable<Event> Events { get; set; }
}
これは私のシングル・レコード・ページを変換するための罰金働きました。 Person Detailsのようなページでは、@Html.DisplayFor(model => model.CreatedOn)
のような行を@Html.DisplayFor(model => model.Person.CreatedOn)
に変更しなければならなかったので、プロパティを正しく見つけることができましたが、うまくいきました。私が作ろうとしている部分的な見解では、そこにモデルの特性を示すようには思えません。これは、多かれ少なかれ、次のようになります。それは直接イベントモデルを使用していたが、今では私がmodel
とプロパティの間に置くかは重要とは思われないとき
@model IEnumerable<Proj.ViewModels.PersonEventViewModel>
<table class="table">
<tr>
<th>@Html.DisplayNameFor(model => model.RecordedOn)</th>
<th>@Html.DisplayNameFor(model => model.RecordedBy)</th>
<th>@Html.DisplayNameFor(model => model.Comments)</th>
</tr>
@foreach (var item in Model) {
<tr>
<td>@Html.DisplayFor(modelItem => item.RecordedOn)</td>
<td>@Html.DisplayFor(modelItem => item.RecordedBy)</td>
<td>@Html.DisplayFor(modelItem => item.Comments)</td>
</tr>
}
これが働いて、それは常にことを私に伝えますそれを解決することはできません。
また、ViewModelを部分ビューに渡す方法がわかりません。私はまだここに置くために何を考え出したていない:モデルやモデルの情報を渡すために
@Html.RenderPartial("_PersonEventList", ?????)
私の様々な試みがすべてのエラーで満たされています。
リクエストごとに、これは私の詳細ページのソースで、イベントの部分的な表示を試みています。あなたのメインビューで次に
@model IEnumerable<Event> (or List<Event>)
:それは、モデルのよう
@model Proj.ViewModels.PersonEventViewModel
@{ ViewBag.Title = "Details"; }
<h2>Details</h2>
<div>
<h4>Person</h4> <hr/>
<dl class="dl-horizontal">
<dt>@Html.DisplayNameFor(model => model.Person.FirstName)</dt>
<dd>@Html.DisplayFor(model => model.Person.FirstName)</dd>
@*...and so on through the fields...*@
</dl>
</div>
<p> @Html.ActionLink("Edit Record", "Edit", new {id = Model.Person.PersonId}) </p>
@Html.RenderPartial("_PersonEventList", Model)
あなたは、私がいなかった( "_ PersonEventList"、(一覧)ViewBag.data) –
Html.RenderPartial @次のように試してみましたしかし、それでも私には以前に言われたことと同様のエラーが出ています: '暗黙のうちに 'void'型を 'object'に変換できません。式はレンダリングする値を返す必要があります。 ' – techturtle
@ Html.Partial( "View"、Model); @ {Html。RenderPartial( "viewName"、Model));} –