2010-06-15 72 views
8

我有看法與工作原理如下:什麼能導致Html.ValidateFor()方法產生編譯錯誤?

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

但是,如果我改變ValidationMessageFor()到ValidateFor()這樣的:

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

我得到這個編譯錯誤:

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

我以爲我的地方失去了一些東西,但我無法弄清楚它是什麼。有沒有其他人遇到這個問題,並找到了解決方案,或有人有一個想法如何解決這個問題?

回答

13

由於ValidateFor()返回void,調用它像這樣:

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

(注意沒有等號;此外分號)

+0

的伎倆。謝謝。 – 2010-06-15 17:55:44

5

對於那些你使用剃鬚刀,你可以這樣做與

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

而不是通常的

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

再次,正如列維提到,因爲ValidateFor回報void,不MvcHtmlString最喜歡Html.方法。而關於這一點,有沒有關於自己在做什麼線索,如果你想使用Html.ValidateFor我敢打賭,你真的想使用:

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

你最後的代碼片段,我想你的意思是@ Html.ValidationMessageFor(x => x.FirstName) – Graham 2017-02-08 21:46:08

+0

謝謝,更新。 – 2017-02-08 21:49:06

相關問題