【问题标题】:MVC3 Razor using Html.BeginForm problemMVC3 Razor 使用 Html.BeginForm 问题
【发布时间】:2011-02-14 09:46:48
【问题描述】:

这可能是一件简单的事情,但我得到了以下代码:

<div>
    @using (Html.BeginForm()) {
        <p>
            ...
        </p>
    }
</div>

它一直抱怨起始 { 括号必须后跟一个结束 } 括号,但它在那里,并且所有执行此类操作的代码示例都表明这是这样做的方式,所以我有点困惑为什么它不起作用...

【问题讨论】:

  • 尝试删除

    标签,但它仍然在我身上死去:解析器错误消息:使用块缺少结束“}”字符。确保此块中的所有“{”字符都有一个匹配的“}”字符,并且没有任何“}”字符被解释为标记。

标签: asp.net-mvc-3 razor


【解决方案1】:

&lt;p&gt;&lt;/p&gt; 标签内的代码可能有错误。

尝试将其注释掉,看看结果如何:

<div>
    @using (Html.BeginForm()) {
        <p>
                    @*  = Server side comment out.
                    ....
                    *@
        </p>
    }
</div>

【讨论】:

  • 作为一个白痴,似乎子元素 (value="Submit) 上有一个未闭合的引号,这似乎导致了问题:(
  • 你不是一个白痴。那意味着我每天都是个白痴。哦哦...
  • 是的,即使是像缺少结束 div 标签
    这样简单的事情也可能导致这种情况。之所以提到这一点,是因为今天每个人都在使用引导程序,如果您在 html 代码中移动了一个表单结束支撑,这很容易成为原因。e
【解决方案2】:

这样对我有用:

  @{ using (Html.BeginForm(...))
     {
      <p>
      Content here
      </p>
     }
  }

问题是 using 是一个语句,而不是一个表达式,所以 @csharpexpression 不起作用。对于语句,剃刀语法是使用@{csharpstatement}。但是 using 语句包含它自己的一对花括号,所以它有点像@{ using(...) { ... } }

【讨论】:

    【解决方案3】:

    在我的情况下,我错过了导致类似错误的关闭 div。

    错误代码:

    <div>
    @using (Html.BeginForm()) {
        <div><p>
                    @*  = Server side comment out.
                    ....
                    *@
        </p>
    }
    </div>
    

    已解决:

    <div>
    @using (Html.BeginForm()) {
        <div><p>
                    @*  = Server side comment out.
                    ....
                    *@
        </p></div>
    }
    </div>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-12
      • 2011-09-03
      相关资源
      最近更新 更多