MVC 사이트를 상속 받았으며 두 페이지를 하나로 결합하도록 요청 받았습니다. 두 뷰 모두 자체 뷰 모델을 가지고 있기 때문에 두 VM을 함께 밀어 넣는 대신 부분 뷰를 사용하여 Clock_Detail이라는 뷰의 시계 그룹을 표시 할 수있었습니다. 그러나 ClockId에 대한 데이터를 채우기 위해 GroupId를 가져와야합니다.매개 변수를 MVC 부분보기에 전달하는 데 혼동이 있습니까?
그래서 Partial Views를 거의 사용하지 않으면 어떻게 작동하는지 혼란 스럽습니다. _ClockGroup.cshtml
이라는 새보기를 작성하고 다른 페이지의 기본 코드를 복사하여 붙여 넣기 만하면 표시 할 항목이 있는지 확인할 수 있습니다.
내 ClockDetail 컨트롤러에 다음을 추가했습니다.
public PartialViewResult ClockGroup(int groupId)
{
ClockGroupViewModel vm = DAL.GetClockGroupDetail(groupId);
return PartialView(vm);
}
여기 이것은 clock_detail.cshtml 뷰 내지 _ClockGroup.cshtml
@model site.Models.ViewModels.ClockGroupViewModel
<div class="form-group">
@Html.LabelFor(m => m.GroupId, htmlAttributes: new { @class = "control-label col-md-2" })
@Html.EditorFor(m => m.GroupId, new { htmlAttributes = new { @class = "form-control", disabled = "disabled", @readonly = "readonly" } })
</div>
<div class="form-group">
@Html.LabelFor(m => m.GroupName, htmlAttributes: new { @class = "control-label col-md-2" })
@Html.EditorFor(m => m.GroupName, new { htmlAttributes = new { @class = "form-control", autofocus = "autofocus" } })
@Html.ValidationMessageFor(m => m.GroupName, "", new { @class = "text-danger" })
</div>
이다. 다음 모델을 사용하고이 뷰에 부분을 추가했습니다.
@model site.Models.ViewModels.ClockDetailViewModel
@Html.Partial("_ClockGroup")
은 물론 나는 모델이 사전 유형 “site.Models.ViewModels.ClockDetailViewModel”
을 통과한다는 오류가 있지만 사전은 시간 “site.Models.ViewModels.ClockGroupViewModel"
의 모델 항목을 필요로한다.
두 개의 ViewModel을 함께 결합하고 단일 ViewModel 만 사용해야합니까?
부분적으로 코드를 작성하는 방법에 따르면 [템플릿 대신]을 사용하는 것이 좋습니다 (http://www.growingwiththeweb.com/2012/12/aspnet-mvc-display-and-editor- templates.html). 템플릿은 훨씬 더 읽기 좋고 템플릿을 호출하면 쉽게 진단 할 수 있기 때문에 템플릿이 유리합니다. 부분품을 사용하는 것은 드뭅니다. –
템플릿을 살펴 보겠습니다. 나는 코드의 유지 보수성을 돕기 위해 무언가를 시도하는 데 항상 열려있다. – Caverman