2011-12-21 33 views
6

Tôi đang sử dụng ASP.Net MVC 3. Tôi là một thực thể được gọi là Học sinh có các thuộc tính Id, Name, Age, RollNo. Trong trang tạo của Sinh viên, tôi đã sử dụng khung công tác xác nhận hợp lệ. Nhưng trong trang Tìm kiếm Nâng cao, tôi đang sử dụng tất cả các thuộc tính nhưng không muốn sử dụng khung công tác xác thực vì người dùng có thể không muốn sử dụng tất cả các trường để tìm kiếm.Tắt xác thực trong @ Html.TextBoxFor trong .Net

Tôi cũng muốn đề cập đến rằng tôi đã sử dụng chú thích [Bắt buộc] trong lớp mô hình.

Hãy giúp tôi khắc phục sự cố này.

Trân Molay

+0

sử dụng 'Html.TextBox' để thay thế? Bạn sẽ mất đi sự tốt lành khác mà 'TextBoxFor' mang lại nhưng chúng không khó để mã hóa. – tugberk

+0

Khi bạn cảm thấy như vậy, bạn giả sử xem xét ViewModel cho trang tìm kiếm này hoặc bất kỳ trang tùy chỉnh nào khác. Sau khi tất cả ViewModels luôn luôn là một thực hành tốt nhất. –

Trả lời

15

tôi sẽ đồng ý với xixonia, sử dụng một riêng Xem Mô hình tìm kiếm nhưng để trả lời câu hỏi của bạn, bạn có một vài phụ tùy chọn của khách hàng:

  1. đèo trong data-val = "false" như một thuộc tính HTML, ví dụ như: @Html.TextBoxFor(x => x.Age, new { data_val = "false" });
  2. sử dụng @Html.TextBox() thay
  3. Tự tạo hộp văn bản của bạn với HTML bằng cách sử dụng tên đầu vào tương tự như vậy nó liên kết với mô hình

tôi f bạn đang thực hiện xác thực trong phần cuối (bạn nên!), tức là kiểm tra ModelState.IsValid thì bạn sẽ phải xóa thuộc tính xác thực khỏi ModelState, như sau: ModelState.Remove("Age");.

+0

Tôi không nghĩ đến việc đó! :) –

+0

Cảm ơn rất nhiều! Nó hoạt động. – Molay

2

Bạn không thể xóa thuộc tính tại thời gian chạy. Bạn sẽ phải có nhiều kiểu xem cho thực thể sinh viên để tạo và các mô hình khác cho tìm kiếm.

+0

Nhìn vào câu hỏi SO này http://stackoverflow.com/q/5367287/293712 – Maheep

2

Có vẻ như các giá trị của lớp Sinh viên bị hạn chế (vì chúng phải là).

Tôi sẽ xem xét sử dụng mô hình chế độ xem riêng cho tìm kiếm, thay vì sử dụng Sinh viên.

public class Student 
{ 
    [ValidationAttributeOfSomeKind] 
    int Age { get; set; } 

    [ValidationAttributeOfSomeKind] 
    string Name { get; set; } 
} 

public class StudentSearch 
{ 
    int? Age { get; set; } 

    string Name { get; set; } 
} 
1

Tôi nghĩ bạn phải viết trình trợ giúp hộp văn bản của riêng mình. Không có cách nào để vô hiệu hóa điều này.

1

Thêm mã này vào mẫu của bạn:

@Html.EnableClientValidation(false); 
+0

Công việc này hoàn hảo! Cảm ơn. – Jirapong

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