ASP.NET MVC 프로젝트를 ViewModel 중간 계층을 사용하여 직선 뷰 및 모델로 변경하려고합니다. 기본적으로, 내가하고있는 일은 사람이 0 이상인 것입니다. 이벤트이 연결되어 있습니다. 부분보기를 넣으려는 바람에 ViewModel로 바뀌고 있습니다. 사람 모든 관련 이벤트을 보여주는 세부 정보 페이지입니다. ViewModel 및 부분 페이지에서 IEnumerable을 포함하도록 구성하는 방법
나는 이벤트에 대한 사람 모델 클래스와 하나가,이 내 뷰 모델입니다 :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 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>
}
하지만 지금은 내가 model
과 재산 사이에 넣어 무슨 상관하지 않는 것, 그것은 항상 하더군요 그것을 해결할 수 없습니다.
또한 ViewModel을 부분 뷰로 전달하는 방법을 잘 모르겠습니다. 나는 여기에 무엇을 넣을 지 아직 결정하지 못했습니다 :
@Html.RenderPartial("_PersonEventList", ?????)
다양한 모델이나 모델 정보를 전달하려는 시도가 모두 오류가 발생했습니다.
요청별로 이것은 내 세부 정보 페이지의 출처로 여기에서 이벤트의 부분보기를 넣으려고합니다. 이 모델의 당신이 당신의 부분에서 "이벤트"를 원하는 가정
@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)
당신이 @ Html.RenderPartial 같은 시도가 ("_ PersonEventList"(목록) ViewBag.data) –
나는하지 않았다 :
는 또한 부분적인 코드를 업데이트해야 그러나 그것은 여전히 나에게 이전에 말한 것과 비슷한 오류를 준다.''void '타입을 암묵적으로'object '로 변환 할 수는 없다. 표현식은 렌더링 할 값을 반환해야합니다. ' – techturtle
@ Html.Partial ("View", Model); @ {HTML.RenderPartial ("viewName", Model));} –