@using(Html.BeginForm()){
Name:
@Html.TextBoxFor(o => o.Name)
<input type="submit" value="submit" />
}
这会给出错误 CS1002 :;预期
如果我删除了名称
,它就有效或者如果我这样做:
<form action="@Url.Action("AddHuman")" method="post">
Name:
@Html.TextBoxFor(o => o.Name)
<input type="submit" value="submit" />
</form>
答案 0 :(得分:17)
问题最有可能出现在Name:
字面上。由于您位于代码块内,因此Razor假定下一行是代码行。您可以使用Name:
前置@:
或将<text></text>
包裹起来,以避免这种情况。文本标记对于Razor是特殊的,并且在视图引擎解析时将被删除。
你<input>
没问题的原因是Razor认识到它是一个标记标记并将其写入响应流,Name:
它不能假设它是因为它不是'一个实际的标记标记。
答案 1 :(得分:2)
有时razor会感到困惑,因此您需要将代码包装在html标记内。如果你不想仅仅因为剃刀没有获得额外的html标签,你可以使用<text>
来删除它。
@using(Html.BeginForm()){
<text>
Name:
@Html.TextBoxFor(o => o.Name)
<input type="submit" value="submit" />
</text>
}