2010-04-22 44 views
11

Tôi đang sử dụng HtmlHelper để tạo ra một hộp kiểm trong quan điểm của tôi như vậy:Setting html thuộc tính đó được dành riêng từ khóa trong Html.CheckBoxFor trong ASP.NET MVC

<%= Html.CheckBoxFor(model => model.SeatOnly, new { checked = "checked" })%>

Tuy nhiên, một lỗi đã được ném khi được chọn là một từ khóa dành riêng. Tôi đã tìm thấy một vài người nói rằng bạn phải sử dụng 'tiền tố từ dự trữ, chỉ cần đặt một uderscore ở phía trước của thuộc tính như sau:

<%= Html.CheckBoxFor(model => model.SeatOnly, new { _checked = "checked" })%>

này không tạo ra một lỗi nhưng trong tạo html thuộc tính là thực sự '_checked' có nghĩa là nó không hoạt động (nếu tôi sử dụng firebug và loại bỏ gạch dưới thuộc tính sau đó có hiệu lực).

Có ai biết cách này trong khi vẫn đang sử dụng CheckBoxFor không?

Cảm ơn

+0

+1 Cũng áp dụng cho việc cố gắng đặt thuộc tính html 'class'. – AaronLS

Trả lời

19
<%= Html.CheckBoxFor(model => model.SeatOnly, new { @checked = "checked" })%> 

Bạn cần phải thêm tiền tố nó với một '@' :-)

Cập nhật

Chỉ cần thử nghiệm với những điều sau đây và các công trình. Hãy thử điều này ...

Mẫu

public class MyModel 
{ 
    public bool SomeBooleanValue { get; set; } 
    public string Title { get; set; } 
} 

Xem (snipped để chỉ các bit quan trọng)

<%= Html.TextBoxFor(x => x.Title) %> 

<%= Html.CheckBoxFor(x => x.SomeBooleanValue, new { @checked = "checked" }) %> 
+1

Cảm ơn bạn đã trả lời nhanh, tôi đã thử tiền tố với @ nhưng điều này dường như không hoạt động, chỉ đơn giản là không có thuộc tính 'đã kiểm tra' trong html được tạo! jcvandan

+0

Với câu trả lời cập nhật của tôi, tôi nhận được Html sau đã xuất ...> WestDiscGolf

+0

Thats chính xác theo cùng một cách như tôi đã cố gắng để làm điều đó, nhưng đối với một số lý do nó luôn luôn phát ra thuộc tính được kiểm tra từ html (nhưng không phải các thuộc tính khác ví dụ như lớp). Tôi thực sự bối rối vì vậy tôi đã quyết định sử dụng CheckBox thay vì CheckBoxFor. – jcvandan

0

Sử dụng @checked

Cũng xảy ra với các thuộc tính class (từ dành riêng), họ sử dụng @class

+0

hoạt động với @class nhưng khi cố gắng sử dụng @checked nó chỉ đơn giản là không thêm bất cứ điều gì để đánh dấu html! – jcvandan

+0

Bạn đã thử kiểm tra chưa? (với 'c' viết hoa) –

+0

Yeah đã cố gắng đó là tốt, cùng một vấn đề như với @checked. Đây chắc chắn là một điều kỳ lạ ... – jcvandan

0

Tôi không thể tìm ra cách để có được HtmlHelper để đăng ký thuộc tính đã kiểm tra vì vậy tôi đã sử dụng đơn giản Html.CheckBox("SeatOnly", true) để thay thế. Bằng cách này, thuộc tính trong mô hình chế độ xem của tôi vẫn đang được đặt và hộp kiểm được chọn.

Điều này là tốt nhưng tôi vẫn muốn biết tại sao @checked không hoạt động theo cùng cách với @class.

4

Tôi có cùng một vấn đề: thuộc tính "đã chọn" luôn bị bỏ qua trong mã html. tôi giải quyết vấn đề bằng cách chuyển "true" vào mô hình. đoạn mã trông như thế này:

MyModel model = new MyModel(); 
model.SomeBooleanValue = true; 

Như bạn kết nối các Checkbox với Model hộp kiểm luôn luôn hiển thị giá trị mô hình có. Nếu giá trị trong mô hình của bạn là "sai" thì hộp kiểm sẽ luôn được bỏ chọn.

Có thể điều này giúp ..

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