Cách chỉ định các thuộc tính dữ liệu trong dao cạo, ví dụ: data-externalid = “23151” trên @ this.Html.CheckBoxFor (…)


122
@this.Html.CheckBoxFor(m => m.MyModel.MyBoolProperty, new { @class="myCheckBox", extraAttr="23521"})

Với dao cạo, tôi không thể chỉ định giá trị cho các thuộc tính dữ liệu, chẳng hạn như data-externalid="23521"

Có cách nào để làm điều này bằng cách sử dụng @this.Html.CheckBoxFor(...)không?

Câu trả lời:


268
@Html.CheckBoxFor(
    m => m.MyModel.MyBoolProperty, 
    new { 
        @class = "myCheckBox", 
        data_externalid = "23521"
    }
)

Các _sẽ tự động được chuyển đổi sang -trong đánh dấu kết quả:

<input type="checkbox" name="MyModel.MyBoolProperty" data-externalid="23521" class="myCheckBox" />

Và điều đó đúng với tất cả các trình trợ giúp Html lấy một htmlAttributesđối tượng ẩn danh làm đối số, không chỉ trình CheckBoxFortrợ giúp.


4
wow, tôi có thể thấy chuyển đổi '_' '-' thực sự khó hiểu ... đặc biệt nếu ai đó thực hiện tìm kiếm chuỗi để tìm một thuộc tính dữ liệu nhất định. Có cách nào khác không?
RayLoveless

5
Chỉ cần biến đổi thế này: new {data_test = "true"}) -> new Dictionary <string, object> {{"data-test", "true"}});
Dominique Alexandre

1
Và nếu bạn cần giá trị đến từ ViewModel của mình; new { @class = "myCheckBox", data_externalid = Model.ExternalId }Tôi đã tìm kiếm sự giúp đỡ về chủ đề này và đây là những gì tôi cần. :)
Scott Fraley

Hơn 8 năm sau, câu trả lời này mới giúp tôi một cách ồ ạt. Tôi không thể tìm ra lý do tại sao việc thêm thẻ v-model biểu mẫu vue của tôi không hoạt động. Tôi đã phải sử dụng v_model = "blah" để thay thế.
Andrew Junior Howard
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.