2010-06-15 6 views
8

tôi có cái nhìn với những điều sau đây mà hoạt động:Điều gì có thể gây ra phương thức Html.ValidateFor() để tạo ra một lỗi biên dịch?

<%= Html.TextBoxFor(m => m.FirstName, new { @class = "required_field_light" }) %> 
<%= Html.ValidationMessageFor(m => m.FirstName) %> 

Tuy nhiên, nếu tôi thay đổi ValidationMessageFor() để một ValidateFor() như thế này:

<%= Html.ValidateFor(m => m.FirstName) %> 

tôi nhận được lỗi biên dịch này:

"The best overloaded method match for 'System.IO.TextWriter.Write(char)' has some invalid arguments" 
"Argument '1': cannot convert from 'void' to 'char'" 

Tôi cho rằng tôi đang thiếu thứ gì đó ở đâu đó nhưng tôi không thể hiểu được nó là gì. Có ai khác đã gặp phải vấn đề này và tìm ra giải pháp hay không ai đó có ý tưởng làm thế nào để giải quyết vấn đề này?

Trả lời

13

Kể từ ValidateFor() trả về void, gọi nó là như vậy:

<% Html.ValidateFor(m => m.FirstName); %> 

(. Lưu ý không có dấu bằng; bổ sung các dấu chấm phẩy)

+0

. Cảm ơn. –

5

Đối với những ai sử dụng Razor, bạn có thể làm tương tự với

@{ Html.ValidateFor(x => x.FirstName); } 

thay vì thông thường

@Html.ValidateFor(x => x.FirstName) 

Một lần nữa, như đã được đề cập bởi Levi, bởi vì một số ValidateFor trả về void, không phải MvcHtmlString giống như hầu hết các phương pháp Html.. Và trên lưu ý đó, không có đầu mối về những gì bạn đang làm, nếu bạn đang cố gắng sử dụng Html.ValidateFor Tôi muốn đặt cược rằng bạn thực sự muốn sử dụng:

@Html.ValidationMessageFor(x => x.FirstName) 
+0

Đoạn mã cuối cùng của bạn, tôi nghĩ bạn có nghĩa là @ Html.ValidationMessageFor (x => x.FirstName) – Graham

+0

Cảm ơn, đã cập nhật. –