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

これはエラーCS1002:を使用して(Html.BeginForm())を使用しているとき。razorが尋ねます。

または私はこのようにそれを行う場合:

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

答えて

17

問題はあなたのName:リテラルで最も可能性があり、私は名前を削除した場合、それは動作します

を期待。あなたがコードブロックの中にいるので、Razorは次の行がコード行であるとみなします。 Name:の前に@:を付けるか、<text></text>で囲んでこれをエスケープすることができます。テキストタグはRazorにとって特別なもので、ビューエンジンによって解析されるときに削除されます。

理由あなた<input>罰金になりますレイザーが、それはマークアップタグがあることを認識し、それが実際のマークアップタグではありませんので、それはそれを想定することはできませんName:で、応答ストリームにそれを書き出すということです。

2

時には剃刀が混乱することがあるので、コードをHTMLタグの内側にラップする必要があります。 razorが取得しないために追加のhtmlタグを追加したくない場合は、<text>を使用して削除してください。

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

@@ Name: –

関連する問題