2010-06-15 12 views
8

mam widok z następujących składników, które działa:Co może być przyczyną metody Html.ValidateFor() w celu wygenerowania błędu kompilacji?

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

Jednak jeśli zmienię ValidationMessageFor() do ValidateFor() tak:

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

otrzymuję ten błąd kompilacji:

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

Zakładam, że gdzieś czegoś brakuje, ale nie wiem, co to jest. Czy ktoś inny napotkał ten problem i znalazł rozwiązanie, lub czy ktoś ma pomysł, jak rozwiązać ten problem?

Odpowiedz

13

Od ValidateFor() zwraca void, nazwać tak:

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

(. Uwaga nie znak równości; dodanie średnikiem)

+0

załatwiło sprawę. Dzięki. –

5

Dla tych z Was, za pomocą brzytwy, można zrobić to samo z

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

zamiast zwykłej

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

Ponownie, jak wspomniano przez Levi, ponieważ ValidateFor zwraca void, a nie MvcHtmlString jak większość metod Html.. I na tym pamiętać, nie mając pojęcia o tym, co robisz, jeśli starasz się używać Html.ValidateFor Chciałbym założyć, że rzeczywiście chcesz używać:

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

Twój ostatni fragment kodu, myślę, że masz na myśli @ Html.ValidationMessageFor (x => x.FirstName) – Graham

+0

Dzięki, zaktualizowany. –

Powiązane problemy