2010-05-24 40 views
92

Có một cú pháp đẹp hơn khi tạo các yếu tố với các thuộc tính có gạch nối thay vì sử dụng:html hyphenated thuộc tính với asp.net MVC

<%= Html.TextBox ("name", value, new Dictionary<string, object> { {"data-foo", "bar"} }) %> 

Nhìn vào thông số kỹ thuật HTML cho các tiêu chuẩn HTML đề xuất 5 và WIA ARIA nó dường như dấu gạch ngang trong thuộc tính HTML đang được lên kế hoạch phổ biến hơn như một số loại khoảng cách tên đơn giản.

Ví dụ: HTML 5 đề xuất các thuộc tính tùy chỉnh có tiền tố là data- và WIA ARIA sử dụng tiền tố aria- cho tất cả các thuộc tính ARIA WIA.

Khi sử dụng trình trợ giúp HTML trong ASP.NET MVC chẳng hạn như <%= Html.TextBox("name", value, new { attribute = attributeValue }) %> đối tượng ẩn danh được chuyển đổi thành từ điển.

Thật không may trong C# không có hỗ trợ cho dấu gạch nối trong tên, do đó, chỉ thay thế là tạo từ điển. Cú pháp rất chi tiết, có ai nhìn thấy một thay thế đẹp hơn hay một cách đơn giản để thay đổi chức năng của các phần mở rộng HTML của ASP.NET MVC mà không cần phải viết lại toàn bộ phần mở rộng?

Trả lời

167

Sử dụng dấu gạch dưới trong tên thuộc tính dữ liệu và nó sẽ xử lý nó một cách kỳ diệu cho bạn, chuyển đổi nó thành dấu nối. Nó biết bạn muốn có một dấu gạch ngang chứ không phải là gạch dưới vì dấu gạch dưới không hợp lệ trong các tên thuộc tính html.

<%= Html.TextBox("name", value, new { @data_foo = "bar"}) %> 
+6

+1 Chỉ cần lưu tôi viết một số mã thực sự xấu xí. Cảm ơn! –

+2

Tôi đã tìm thấy một số câu hỏi SO tương tự, và đây là câu trả lời hay nhất. – user2780436

+0

Bạn có thể thêm lý do cho tuyên bố của mình ** gạch dưới không hợp lệ trong thuộc tính html ** hay không. Ít nhất [trạng thái html 4.01] (http://www.w3.org/TR/html401/intro/sgmltut.html#didx-attribute): _Giá trị thuộc tính chỉ có thể chứa chữ cái (az và AZ), chữ số (0- 9), dấu gạch nối (ASCII thập phân 45), dấu chấm (ASCII thập phân 46), dấu gạch dưới (ASCII thập phân 95) và dấu hai chấm (ASCII số thập phân 58) _, – surfmuggle

17

Câu trả lời được cung cấp tại ActionLink htmlAttributes đề xuất sử dụng dấu gạch dưới thay vì dấu gạch nối. MVC.Net được cho là phát ra dấu gạch ngang thay vì dấu gạch dưới khi gửi trang tới trình duyệt.

+0

Điều này phù hợp với tôi. –

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