2012-03-28 34 views
7

Tôi đã vật lộn với tùy chỉnh của mình là EditorForModel và cách đặt tên các phần tử HTML được phát ra bởi mã của tôi và trình trợ giúp MVC3 được tích hợp sẵn. Mã của tôi rất đơn giản và rõ ràng là thiếu một số sự tinh tế, như đặt tên cho các phần tử được hiển thị chính xác.Tôi đang tìm kiếm các tài nguyên nâng cao về tùy chỉnh mẫu soạn thảo MVC3

Tôi đang tìm kiếm các tài nguyên nâng cao có thể giúp tôi trau dồi khu vực phát triển hiện tại của mình, đặc biệt là để chia nhỏ mô hình chế độ xem chính trên các mô hình phụ nhỏ hơn để tôi có thể áp dụng ba cuộc gọi EditorForModel , để tách các trình chỉnh sửa mô hình được tạo ra trên các cột biểu mẫu hoặc trang tab.

hiện 'đè' My mặc định EditorForModel mẫu như sau:

@{ 
    // TODO Filtering for subsets of model without having to bind separate models. 
     var properties = ViewData.ModelMetadata.Properties.Where(pm => pm.ShowForEdit && !pm.IsComplexType && !ViewData.TemplateInfo.Visited(pm)); 
    } 
<fieldset> 
    <legend>@ViewData.ModelMetadata.DisplayName</legend> 
    <ul class="form-column"> 
     @foreach (var prop in properties) 
     { 
      <li> 
        @{ 
      if (prop.HideSurroundingHtml) 
      { 
         @Html.Editor(prop.DisplayName ?? prop.PropertyName) 
      } 
      else 
      { 
         @Html.Label(prop.PropertyName, (prop.IsRequired ? "* " : "") + (prop.DisplayName ?? prop.PropertyName)) 
         @Html.Editor(prop.PropertyName) 
      } 
        } 
      </li> 
     } 
    </ul> 
</fieldset> 

tôi đã sao chép và sửa đổi mã này từ Object.ascx dụ mẫu trên this article trên Brad Wilson's blog. Tôi có thể tham khảo tài nguyên nào để làm giàu điều này để phục vụ cho càng nhiều kịch bản càng tốt, càng phong phú càng tốt?

+1

Nếu bạn đang tìm kiếm mẫu html mạnh mẽ, tôi sẽ khuyên bạn nên kiểm tra ra html mẫu ước từ nhóm FubuMVC. Chúng tương thích 100% với ASP.NET MVC và linh hoạt hơn/composable. Tôi đã sử dụng chúng trong hơn 2 năm và hoàn toàn thích nó. http://craigcav.wordpress.com/2011/11/22/applying-conventions-in-asp-net-mvc/ Nếu bạn nhấp qua bài đăng của Nick có liên kết đến cách thực hiện công việc này trong ASP.NET MVC. – Ryan

+1

Tôi không nghĩ rằng bạn có thể làm quá tốt hơn mẫu đó, đó là: danh sách nhãn + Trình chỉnh sửa hoặc Hiển thị cho từng thuộc tính. Nếu bạn muốn mẫu đối tượng của bạn rất chung chung, cải tiến duy nhất bạn có thể làm là xử lý thuộc tính Order để quyết định thứ tự danh sách các thuộc tính. Ở phía bên kia, bạn có thể thiết kế khung công tác của mình dựa trên các thuộc tính tùy chỉnh kiểm soát cách tổ chức khuôn mẫu. Tuy nhiên, cách bạn làm điều này phụ thuộc rất nhiều vào ứng dụng của bạn. –

Trả lời

1

Mẫu của bạn có vẻ khá tốt cho một trình soạn thảo rất chung chung. Nếu tôi hiểu câu hỏi của bạn đúng cách, bạn đang tìm thêm nhiều cách để chia nhỏ và lọc các thuộc tính mô hình của mình.

Một cách để lọc mô hình thành các tập hợp con mà không phải tạo các mô hình phụ sẽ là sử dụng các thuộc tính. Bạn có thể tạo nhiều thuộc tính tùy thích và yêu cầu chúng triển khai IMetadataAware. Ở đó bạn có thể thêm các thuộc tính tùy ý vào túi thuộc tính ModelMetadata.AdditionalValues và có các mẫu trình chỉnh sửa của bạn kiểm tra các giá trị đó.

Hoặc bạn có thể triển khai tùy chỉnh ModelMetadataProvider tùy chỉnh của riêng bạn trả về đối tượng ModelMetadata tùy chỉnh có bất kỳ thuộc tính nào bạn muốn.

Hoặc sẽ cho phép bạn chỉ cần chú thích mô hình của bạn để xác định hành vi lọc.

Cả hai phương pháp được mô tả bởi những người khác, Brad Wilson, trong này blog post.

+0

Cảm ơn @ bhamlin, tôi đã xem xét các thuộc tính để chia các mô hình phụ của mình. Điều này thậm chí có thể gọi triển vọng thú vị của việc phát triển một nhà cung cấp siêu dữ liệu XML tùy chỉnh để tôi thực sự có thể sử dụng một nhà thiết kế để quản lý siêu dữ liệu. Rất con trỏ bài viết, cảm ơn. – ProfK

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