ViewModel이 다음과 같다고 가정합니다.
public class AnotherViewModel
{
public string Name { get; set; }
}
public class MyViewModel
{
public string Name { get; set; }
public AnotherViewModel Child { get; set; }
public AnotherViewModel Child2 { get; set; }
}
뷰에서 나는
<% Html.RenderPartial("AnotherViewModelControl", Model.Child) %>
부분적으로 할게요
<%= Html.TextBox("Name", Model.Name) %>
or
<%= Html.TextBoxFor(x => x.Name) %>
그러나 문제는 둘 다 name = "Name"을 렌더링하는 반면 모델 바인더가 제대로 작동하려면 name = "Child.Name"이 필요하다는 것입니다. 또는 동일한 부분보기를 사용하여 두 번째 속성을 렌더링 할 때 name = "Child2.Name"입니다.
부분보기가 필요한 접두사를 자동으로 인식하도록하려면 어떻게합니까? 매개 변수로 전달할 수 있지만 너무 불편합니다. 예를 들어 재귀 적으로 렌더링하고 싶을 때 더 나쁩니다. 접두사를 사용하여 부분 뷰를 렌더링하는 방법이 있습니까? 아니면 호출하는 람다 식의 자동 재구성을 사용하여
<% Html.RenderPartial("AnotherViewModelControl", Model.Child) %>
올바른 "자식"을 자동으로 추가합니다. 생성 된 이름 / ID 문자열의 접두사?
타사 뷰 엔진 및 라이브러리를 포함한 모든 솔루션을 수락 할 수 있습니다. 실제로 Spark View Engine (매크로를 사용하여 문제를 "해결") 및 MvcContrib을 사용하지만 거기에서 솔루션을 찾지 못했습니다. XForms, InputBuilder, MVC v2-이 기능을 제공하는 모든 도구 / 인사이트는 훌륭합니다.
현재 직접 코딩을 생각하고 있지만 시간 낭비 인 것 같습니다.이 사소한 것들이 이미 구현되지 않았다는 것이 믿기지 않습니다.
많은 수동 솔루션이 존재할 수 있으며 모두 환영합니다. 예를 들어, IPartialViewModel <T> {public string Prefix; T 모델; }. 하지만 기존 / 승인 된 솔루션을 선호합니다.
helper.ViewData.TemplateInfo.HtmlFieldPrefix
의 형태로{oldprefix}.{newprefix}