2010-06-15 41 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

相关问题