2011-01-17 13 views
6
@using(Html.BeginForm()){ 
Name: 
    @Html.TextBoxFor(o => o.Name) 
     <input type="submit" value="submit" /> 
    } 

gibt dies Fehler CS1002:; erwartetRasierer fragt nach; bei der Verwendung von (Html.BeginForm())

es funktioniert, wenn ich die Namen entfernen:

oder wenn ich es wie folgt aus:

<form action="@Url.Action("AddHuman")" method="post"> 
Name: 
    @Html.TextBoxFor(o => o.Name) 
     <input type="submit" value="submit" /> 
</form> 

Antwort

17

Das Problem ist höchstwahrscheinlich mit Ihrem Name: wörtlich zu nehmen. Da Sie sich in einem Codeblock befinden, geht Razor davon aus, dass die nächsten Zeilen Codezeilen sind. Sie können dies entweder durch Voranstellen von Name: mit @: oder durch Umschließen mit <text></text> umgehen. Das Text-Tag ist speziell für Razor und wird entfernt, wenn es von der View-Engine analysiert wird.

Der Grund, warum Ihre <input> in Ordnung ist, ist, dass Razor erkennt, dass es ein Markup-Tag ist und wird es in den Antwortstream schreiben, mit Name: kann es nicht davon ausgehen, da es kein tatsächliches Markup-Tag ist.

2

Manchmal wird der Rasierer verwirrt, so dass Sie Ihren Code innerhalb eines HTML-Tags verpacken müssen. Wenn Sie keine zusätzlichen HTML-Tags hinzufügen möchten, nur weil der Rasierer sie nicht bekommt, können Sie <text> verwenden, die entfernt werden.

@using(Html.BeginForm()){ 
    <text> 
     Name: 
     @Html.TextBoxFor(o => o.Name) 
     <input type="submit" value="submit" /> 
    </text> 
} 
+0

Sie können auch @@ Name: –

Verwandte Themen