8

我对以下有效的观点有看法:

<%= 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'"

我假设我在某处遗漏了一些东西,但我无法弄清楚它是什么。有没有其他人遇到过这个问题并找到了解决方案,或者有人知道如何解决这个问题?

4

2 回答 2

13

由于 ValidateFor() 返回 void,所以这样调用它:

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

(注意没有等号;添加分号。)

于 2010-06-15T17:04:17.110 回答
6

对于那些使用 Razor 的人,您可以使用

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

而不是通常的

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

同样,正如 Levi 所提到的,因为 aValidateFor返回voidMvcHtmlString不像大多数Html.方法。在那张纸条上,不知道你在做什么,如果你想使用Html.ValidateFor我敢打赌你真的想使用:

@Html.ValidationMessageFor(x => x.FirstName)
于 2013-05-08T15:29:55.490 回答