Что может вызывать метод Html.ValidateFor () для получения ошибки компиляции? - PullRequest
8 голосов
/ 15 июня 2010

У меня есть вид со следующим, который работает:

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

Я предполагаю, что где-то что-то упустил, но не могу понять, что это.Кто-нибудь еще сталкивался с этой проблемой и нашел решение, или у кого-то есть идея, как решить эту проблему?

Ответы [ 2 ]

13 голосов
/ 15 июня 2010

Поскольку ValidateFor () возвращает void, назовите его так:

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

(обратите внимание, нет знака равенства; добавление точки с запятой.)

6 голосов
/ 08 мая 2013

Для тех из вас, кто использует Razor, вы можете сделать то же самое с

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

вместо обычного

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

Опять же, как уже упоминал Леви, потому что ValidateFor возвращает void, а не MvcHtmlString, как большинство Html. методов. И на этой ноте, не имея понятия о том, что вы делаете, если вы пытаетесь использовать Html.ValidateFor, держу пари, что вы действительно хотите использовать:

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