2010-11-12 30 views
5

Viết ngắn ViewData.TemplateInfo.HtmlFieldPrefix bằng chuỗi rỗng, có cách nào để giữ tiền tố tiếp tục trên một tập hợp lồng nhau của các cuộc gọi trợ giúp EditorFor hoặc DisplayFor mạnh mẽ không?Nested EditorFor/DisplayĐể ghi đè tên trường

Dưới đây là đánh dấu xấu xí/code tôi đã làm việc cho đến nay:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<System.Web.Mvc.SelectList>" %> 
<% ViewData.TemplateInfo.HtmlFieldPrefix = ""; %> 
<%=Html.DropDownList("sort", Model)%> 

Tôi đã thử các * Đối với tình trạng quá tải mà cho phép xác định htmlFieldName nhưng điều đó chỉ làm thay đổi cấp trên trực tiếp. Nếu tôi có một tiền tố tại điểm của cuộc gọi đó, tôi chỉ cần thay đổi những gì được nối vào tiền tố.

Tôi có thể viết đánh dấu mẫu bằng tay, nhưng làm như vậy cho đối tượng SelectList có vẻ như tôi sẽ chỉ sao chép qua nguồn MVC với một tinh chỉnh duy nhất vì nó liên quan đến logic ràng buộc dữ liệu đối tượng.

Trả lời

0

Nếu bạn có thuộc tính trên mô hình chế độ xem của mình, thay vì chỉ thực hiện danh sách thả xuống trực tiếp trên mô hình, bạn có thể đặt thuộc tính DataAnnontation trên đó.

public class MyModel 
{ 
    [Display(Name="Your Favorite Choices")] 
    public string[] Choices {get; set;} 
} 

sau đó trong mã của bạn

<%= Html.LableFor(m => m.Choices) %><br /> 
<%=Html.DropDownList("sort", Model.Choices)%> 

có nên sử dụng tên đó.

[Hy vọng tôi đã nhận nó ngay từ bộ nhớ. :)]

Đây là liên kết MSDN: http://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.displayattribute.displayattribute.aspx

+1

Tôi đang tìm cách ghi đè tiền tố trong thuộc tính ID của trường HTML (được sử dụng cho mô hình ràng buộc trên chuyến về), không phải tên hiển thị của người dùng. – patridge

0

Không chắc chắn nếu tôi hiểu câu hỏi của bạn, nhưng nếu bạn làm cho quan điểm "con" như partials thay vì EditorFor sau đó các trường sẽ không được bắt đầu.

Các vấn đề liên quan