2010-06-15 3 views
8

Ich habe Ansicht mit der folgenden, die funktioniert:Was kann dazu führen, dass die Html.ValidateFor() -Methode einen Kompilierungsfehler erzeugt?

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

Allerdings, wenn ich die ValidationMessageFor() zu einem ValidateFor() wie folgt zu ändern:

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

ich Fehler erhalten diese Kompilierung:

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

Ich nehme an, ich vermisse etwas irgendwo, aber ich kann nicht herausfinden, was es ist. Ist jemand anderes auf dieses Problem gestoßen und hat eine Lösung gefunden, oder hat jemand eine Idee, wie das zu lösen ist?

Antwort

13

Da ValidateFor() void zurückgibt, ist es wie so nennen:

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

(. Beachten Sie kein Gleichheitszeichen; Zusatz von Semikolon)

+0

den Trick tat. Vielen Dank. –

5

Für die von Ihnen Razor verwenden, können Sie das gleiche tun mit

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

statt der üblichen

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

Wieder, wie von Levi erwähnt wurde, weil ein ValidateForvoid, nicht MvcHtmlString wie die meisten Html. Methoden zurückgibt. Und in diesem Sinne, da sie keine Ahnung, was Sie tun, wenn Sie versuchen, Html.ValidateFor zu verwenden, würde ich wetten, dass Sie tatsächlich verwenden möchten:

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

Ihr letztes Code-Snippet, ich denke, Sie meinen @ Html.ValidationMessageFor (x => x.FirstName) – Graham

+0

Danke, aktualisiert. –

Verwandte Themen