Thuộc tính html gạch nối với asp.net mvc


111

Có cú pháp nào đẹp hơn khi tạo các phần tử có thuộc tính gạch nối thay vì sử dụng:

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

Nhìn vào các thông số kỹ thuật HTML cho các tiêu chuẩn được đề xuất HTML 5 và WIA ARIA , có vẻ như dấu gạch nối trong các 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ố data-và WIA ARIA sử dụng aria-tiền tố cho tất cả các thuộc tính WIA ARIA.

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 ngang trong tên, vì vậy cách thay thế duy nhất là tạo một từ điển. Cú pháp của nó rất dài dòng, có ai đã thấy một giải pháp thay thế đẹp hơn hoặc 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 không?

Câu trả lời:


202

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 nó thành dấu gạch ngang. Nó biết bạn muốn một dấu gạch ngang thay vì một dấu gạch dưới vì dấu gạch dưới không hợp lệ trong tên thuộc tính html.

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

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

Bạn có thể thêm lý do cho câu lệnh của bạn dấu gạch dưới không hợp lệ trong các thuộc tính html . Ít nhất html 4.01 nêu rõ : Giá trị thuộc tính chỉ có thể chứa các chữ cái (az và AZ), chữ số (0-9), dấu gạch ngang (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 thập phân 58) ,
surfmuggle

@threeFourOneSixOneBa câu trích dẫn của bạn đề cập đến giá trị thuộc tính, nhưng trong câu hỏi này, chúng tôi đang đề cập đến tên thuộc tính.
ED-209,

@threeFourOneSixOneThree Tôi đã thay đổi khi kết thúc câu trả lời của tôi để 'dấu gạch chân là không hợp lệ trong tên thuộc tính html'
ED-209

19

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.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.