2012-03-12 31 views
7

Tôi đang tạo phương thức mở rộng HtmlHelper. Nhiều phương thức khung dựng sẵn hỗ trợ các tham số như htmlAttributes (của đối tượng kiểu) được hiển thị trên HTML kết quả. Làm thế nào tôi có thể cung cấp quá tải của các phương pháp riêng của tôi mà cũng hỗ trợ một tham số htmlAttributes mà không cần viết lại logic ghép nối chuỗi để hiển thị chúng như là các thuộc tính trên thẻ?Làm thế nào để hỗ trợ các tham số htmlAttributes trong phần mở rộng HtmlHelper?

+0

Bạn có gì cho đến nay? –

Trả lời

17

Đối tượng HtmlHelper có phương thức chuyển đổi đối tượng thành từ điển tên/giá trị, sau đó bạn có thể hợp nhất vào thẻ của mình khi thẻ được tạo. Ví dụ, đoạn mã này sẽ tạo ra một thẻ <script> với bất cứ điều gì thuộc tính thêm được thông qua tại:

var attributes = HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes) as IDictionary<string, object>; 

TagBuilder tag = new TagBuilder("script"); 
tag.MergeAttributes(attributes); 
tag.MergeAttribute("type", "text/javascript"); 
tag.MergeAttribute("src", scriptPath); 

Bạn có thể cung cấp quá tải hoặc sử dụng các giá trị mặc định để cung cấp một giá trị null cho htmlAttributes, mà sẽ tạo ra một sản phẩm nào Dictionary.

(Phương pháp này cũng khử trùng tên thuộc tính thành các thuộc tính HTML hợp lệ, v.v. để an toàn để sử dụng trên bất kỳ đối tượng nào.)

+0

Ồ, chỉ là những gì tôi cần. Cảm ơn bạn! – blaster

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