ViewModel'e sahip olduğumu varsayalım.
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; }
}
Görünümde bir parçayı işleyebilirim
<% Html.RenderPartial("AnotherViewModelControl", Model.Child) %>
Kısmen yapacağım
<%= Html.TextBox("Name", Model.Name) %>
or
<%= Html.TextBoxFor(x => x.Name) %>
Bununla birlikte, sorun şu ki, model bağlayıcının düzgün çalışması için name = "Child.Name" 'e ihtiyacım varken her ikisinin de name = "Name" oluşturması. Veya, ikinci özelliği aynı kısmi görünümü kullanarak oluşturduğumda name = "Child2.Name".
Kısmi görünümümün gerekli öneki otomatik olarak tanımasını nasıl sağlayabilirim? Parametre olarak iletebilirim ama bu çok sakıncalı. Örneğin onu yinelemeli hale getirmek istediğimde bu daha da kötü. Önek ile kısmi görünümler oluşturmanın bir yolu var mı, yoksa daha da iyisi, çağıran lambda ifadesinin otomatik olarak yeniden oluşturulmasıyla
<% Html.RenderPartial("AnotherViewModelControl", Model.Child) %>
otomatik olarak doğru "Çocuk" ekleyecektir. oluşturulan ad / kimlik dizelerine önek?
Üçüncü taraf görünüm motorları ve kitaplıklar dahil olmak üzere herhangi bir çözümü kabul edebilirim - aslında Spark View Engine (sorunu makrolarını kullanarak "çözüyorum") ve MvcContrib kullanıyorum, ancak orada bir çözüm bulamadım. XForms, InputBuilder, MVC v2 - bu işlevi sağlayan herhangi bir araç / öngörü harika olacaktır.
Şu anda bunu kendim kodlamayı düşünüyorum ama zaman kaybı gibi görünüyor, bu önemsiz şeylerin henüz uygulanmadığına inanamıyorum.
Pek çok manuel çözüm mevcut olabilir ve hepsine açığız. Örneğin, parçalarımı IPartialViewModel <T> {public string Prefix; T Modeli; }. Ancak bazı mevcut / onaylanmış çözümü tercih ederim.
helper.ViewData.TemplateInfo.HtmlFieldPrefix
şeklinde{oldprefix}.{newprefix}