【问题标题】: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: 前面加上@: 或用&lt;text&gt;&lt;/text&gt; 包装它来逃避它。文本标签是 Razor 的特殊标签,在被视图引擎解析时会被移除。

    您的&lt;input&gt; 会很好的原因是 Razor 识别出它是一个标记标签并将其写出到响应流中,Name: 它不能假设因为它不是一个实际的标记标记。

    【讨论】:

      【解决方案2】:

      有时 razor 会混淆,因此您需要将代码包装在 html 标记内。如果您不希望仅仅因为 razor 没有得到它而添加额外的 html 标签,您可以使用&lt;text&gt;,它将被删除。

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

      【讨论】:

      • 你也可以@@Name:
      猜你喜欢
      • 1970-01-01
      • 2011-08-20
      • 1970-01-01
      • 2013-02-22
      • 1970-01-01
      • 1970-01-01
      • 2020-11-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多