2012-10-17 28 views
12

Tôi đang trong quá trình nâng cấp ứng dụng của mình lên Bootstrap 2.1.1 và tôi cần thêm thuộc tính lớp (class = "dạng ngang") cho nhiều thẻ biểu mẫu. Vấn đề là, hầu hết các biểu mẫu đều sử dụng định dạngLàm cách nào để thêm thuộc tính lớp vào Html.BeginForm() trong MVC3/4 để duy trì quá tải tối thiểu

@using (Html.BeginForm()) { 

mà tôi muốn giữ. Cách rõ ràng để có được thuộc tính lớp trong đó là sử dụng quá tải sau đây, ví dụ:

@using (Html.BeginForm("Register", "Account", FormMethod.Post, new { @class = "form-horizontal" })) { 

Nhưng tôi không muốn làm điều đó. Cách tốt nhất để thêm thuộc tính lớp vào biểu mẫu của tôi là gì?

Tôi đã nghĩ đến việc sử dụng một bộ xử lý sẵn sàng cho tài liệu .addClass ("dạng ngang") thành biểu mẫu, nhưng tôi lo rằng người dùng sẽ thấy 'flash nội dung không bị cản trở' đáng sợ.

Một cách tiếp cận khác có thể là sử dụng kết hợp kiểu ít hơn để thêm lớp .form-horizontal vào tất cả các quy tắc kiểu biểu mẫu nhưng chưa sử dụng ít hơn, vì vậy tôi không chắc chắn về điều này một.

Bất kỳ ai biết cách tốt nhất để giải quyết vấn đề này?

Trả lời

14

Điều gì về việc viết phương thức trợ giúp tùy chỉnh gọi là quá tải yêu cầu, đi qua 'dạng ngang'?

Sau đó, chế độ xem của bạn sẽ sử dụng @using (Html.BootstrapBeginForm()) {, để lại cho bạn chế độ xem đẹp và gọn gàng.

+0

Đúng, đó là cách. Cảm ơn @StanK –

20

Sau lời khuyên hôi, và lời khuyên của một số câu trả lời khác về SO, tôi tạo ra một phương pháp mở rộng đặc biệt phù hợp với bố cục hình thức Bootstrap:

public static MvcForm BeginHorizontalForm(this HtmlHelper helper) { 
    return helper.BeginForm(null, null, FormMethod.Post, new { @class = "form-horizontal" }); 
} 

cho phép tôi sử dụng

@using (Html.BeginHorizontalForm()) {... 

đó là tốt đẹp và thanh lịch.

+0

Tuyệt vời, cảm ơn. –

+2

Bạn đã thêm methode này vào lớp 'FormExtensions' chưa? – Chlebta

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