【问题标题】:razor asks for ; when doing using(Html.BeginForm())剃须刀要求;使用时(Html.BeginForm())
【发布时间】:2011-01-17 13:55:06
【问题描述】:
@using(Html.BeginForm()){
Name:
@Html.TextBoxFor(o => o.Name)
<input type="submit" value="submit" />
}
这给出了错误 CS1002: ;预计
如果我删除 Name:
就可以了
或者如果我这样做:
<form action="@Url.Action("AddHuman")" method="post">
Name:
@Html.TextBoxFor(o => o.Name)
<input type="submit" value="submit" />
</form>
【问题讨论】:
标签:
asp.net-mvc
asp.net-mvc-3
razor
【解决方案1】:
问题很可能与您的 Name: 文字有关。由于您位于代码块内,因此 Razor 假定下一行是代码行。您可以通过在Name: 前面加上@: 或用<text></text> 包装它来逃避它。文本标签是 Razor 的特殊标签,在被视图引擎解析时会被移除。
您的<input> 会很好的原因是 Razor 识别出它是一个标记标签并将其写出到响应流中,Name: 它不能假设因为它不是一个实际的标记标记。
【解决方案2】:
有时 razor 会混淆,因此您需要将代码包装在 html 标记内。如果您不希望仅仅因为 razor 没有得到它而添加额外的 html 标签,您可以使用<text>,它将被删除。
@using(Html.BeginForm()){
<text>
Name:
@Html.TextBoxFor(o => o.Name)
<input type="submit" value="submit" />
</text>
}