Giả sử tôi có ViewModel như
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; }
}
Trong chế độ xem, tôi có thể kết xuất một phần với
<% Html.RenderPartial("AnotherViewModelControl", Model.Child) %>
Một phần tôi sẽ làm
<%= Html.TextBox("Name", Model.Name) %>
or
<%= Html.TextBoxFor(x => x.Name) %>
Tuy nhiên, vấn đề là cả hai sẽ hiển thị name = "Name" trong khi tôi cần có name = "Child.Name" để chất kết dính mô hình hoạt động bình thường. Hoặc, name = "Child2.Name" khi tôi hiển thị thuộc tính thứ hai bằng cách sử dụng cùng một chế độ xem một phần.
Làm cách nào để làm cho chế độ xem từng phần của tôi tự động nhận ra tiền tố bắt buộc? Tôi có thể chuyển nó như một tham số nhưng điều này quá bất tiện. Điều này thậm chí còn tệ hơn khi tôi muốn kết xuất nó một cách đệ quy chẳng hạn. Có cách nào để hiển thị các dạng xem từng phần với một tiền tố, hoặc thậm chí tốt hơn, với tính năng tự động nhận lại biểu thức lambda đang gọi để
<% Html.RenderPartial("AnotherViewModelControl", Model.Child) %>
sẽ tự động thêm đúng "Con". tiền tố cho chuỗi tên / id đã tạo?
Tôi có thể chấp nhận bất kỳ giải pháp nào, bao gồm các công cụ và thư viện chế độ xem bên thứ 3 - Tôi thực sự sử dụng Spark View Engine (tôi "giải quyết" vấn đề bằng cách sử dụng macro của nó) và MvcContrib, nhưng không tìm thấy giải pháp ở đó. XForms, InputBuilder, MVC v2 - bất kỳ công cụ / thông tin chi tiết nào cung cấp chức năng này sẽ rất tuyệt vời.
Hiện tại tôi đang nghĩ về việc tự viết mã cái này nhưng có vẻ như lãng phí thời gian, tôi không thể tin rằng thứ tầm thường này lại không được triển khai.
Rất nhiều giải pháp thủ công có thể tồn tại và tất cả chúng đều được hoan nghênh. Ví dụ: tôi có thể buộc các thành phần của mình dựa trên Tiền tố IPartialViewModel <T> {public string; T Mô hình; }. Nhưng tôi thích một số giải pháp hiện có / đã được phê duyệt.
CẬP NHẬT: có một câu hỏi tương tự không có câu trả lời ở đây .
helper.ViewData.TemplateInfo.HtmlFieldPrefix
theo hình thức{oldprefix}.{newprefix}