2010-09-12 17 views
38

tôi cố gắng thêm xác nhận phía khách hàng sử dụng dòng mã này:Enable xác nhận khách hàng trong quan điểm Razor (ASP MVC 3)

@Html.EnableClientValidation()

Nhưng tôi tiếp tục nhận được thông báo lỗi này:

Compiler Thông báo lỗi: CS1502: Kết hợp phương thức quá tải tốt nhất cho 'Microsoft.WebPages.WebPageUltimateBase.Write (Microsoft.WebPages.Helpers.HelperResult)' có một số đối số không hợp lệ

Đây có phải là wor vua cho bất cứ ai khác, hoặc là nó một cách tiếp cận cho điều này trong ASP MVC 3?

Trả lời

75

Thay vào đó, bạn có thể sử dụng thông tin sau thay cho dòng mã dự kiến.

@(ViewContext.ClientValidationEnabled = true) 

Có thể là sự giám sát trong các phương pháp mở rộng cho htmlhelper.

Trên thực tế, bạn có thể sử dụng phương pháp HtmlHelper bằng cách làm như sau

@{ Html.EnableClientValidation(); } 
+0

Cảm ơn bạn đã trả lời của bạn, nhưng khi tôi đặt dòng code của bạn vào xem tất cả nó là đầu ra 'TRUE' vào trang. Tôi có phải đặt mã ở bất cứ đâu đặc biệt không? Bây giờ im đặt nó ngay trên '@using của tôi (Ajax.BeginForm (...' – Martin

+0

Lạ, tôi không nhận thấy rằng trước đây, cảm ơn :) – Buildstarted

+10

Lý do nó không hoạt động chỉ với @ là bởi vì @ hy vọng sẽ viết một cái gì đó để trình duyệt nhưng EnableClientValidation không trả lại bất cứ điều gì vì vậy Microsoft.WebPages.WebPageUltimateBase.Write không thành công như một kết quả – Buildstarted

63

Hey, trong ASP.NET MVC3, không có cần phải thêm Html.EnableClientValidation() trong lần xem trang, thay vào đó, chỉ cần kích hoạt các clientValidation trong file webconfig như sau:

<appSettings> 
    <add key="ClientValidationEnabled" value="true" /> 
    <add key="UnobtrusiveJavaScriptEnabled" value="true" /> 
</appSettings> 
+9

btw, bạn cũng nên đặt các tệp jqueryvalidation js trong chế độ xem của bạn hoặc trang bố cục của bạn. – bearing09

+5

Có: NuGet [jQuery.Validation.Unobtrusive] (http://nuget.org/packages/jQuery.Validation.Unobtrusive) và thêm ' 'cho cả hai' jquery.validate.min.js' và 'jquery.validate.unobtrusive.min.js'. –

4

bạn đang sử dụng các yếu tố html <form> trên trang của bạn thay vì Html.BeginForm để tạo MẪU html của bạn.

Tôi đã gặp vấn đề tương tự chính xác và vì nó không sử dụng Html.BeginForm để tạo MẪU của mình dẫn đến các thuộc tính đầu vào bắt buộc data-val-required="The Email field is required." data-val="true" class="input-validation-error và trình giữ chỗ để xác thực không được đưa vào trang mặc dù tôi có số @Html.ValidationMessageFor(m => m.User.Role) được chèn trên trang xem của tôi.

6

thẻ này

 @{ Html.EnableClientValidation(false); } 

phải đến trước khi

@using (Html.BeginForm()) 
0

Trong trường hợp của tôi, tôi đã không sử dụng EditorFor, nhưng TextBoxFor!

Hãy chắc chắn rằng bạn sử dụng:

   <td>@Html.EditorFor(m => m.Email)</td>