【问题标题】:The server tag is not well formed error服务器标签格式不正确错误
【发布时间】:2013-02-23 02:09:09
【问题描述】:

我写了这段代码。该代码包含预期的 runat="server" 属性,但它给了我这个错误消息:error on hiddenfield 部分。

 <asp:Repeater ID="Repeater1" runat="server">
    <ItemTemplate>
        <asp:HiddenField ID="HiddenField1" Value="<%#Eval("Path")%>" runat="server" />
        <img alt="image" style="text-align: center" src="<%#Eval("Path")%>" /><asp:CheckBox
            ID="CheckBox1" runat="server" />
        <br></br>
    </ItemTemplate>
</asp:Repeater>                  

【问题讨论】:

  • 你有一个关闭 &lt;/a&gt; - 但没有打开 &lt;a href=.....&gt; ...
  • 您不能在转发器中分配 ID,它会创建具有相同 ID 的多个元素,这会导致意外行为。为了防止这个 ASP 可能会抛出一个错误
  • 忘记删了重点不是这个
  • @Vogel612 这不是真的,ASP 不会抛出错误。您可以很好地分配一个 ID,它们都会变得独一无二。这有助于在 DataBound 事件期间查找控件。可以在MSDN Examples 看到,也只是一般用途。
  • @Vogel612 ID 唯一相同的情况是控件上没有 runat="server"

标签: c# asp.net


【解决方案1】:

您不能在双引号中使用双引号,因此请结合使用 singledouble quotes

改变

<asp:HiddenField ID="HiddenField1" Value="<%#Eval("Path")%>" runat="server" />

<asp:HiddenField ID="HiddenField1" Value='<%#Eval("Path")%>' runat="server" />

【讨论】:

  • @calypso 您示例中的第二个引用在技术上是“结束引用”,这意味着您的值是Value="&lt;%#Eval(",紧随其后的是Path")%&gt;"',没有空格。与ID="_me"runat="server" 相同的错误
  • 如果参数的值本身包含引号(例如包含字符串的javascript函数调用),则必须使用单引号来封装值,并在值内使用双引号来封装任何包含的字符串。
【解决方案2】:

在使用 eval scriptlet 时尝试使用单引号而不是双引号,如下所示:

 <asp:Repeater ID="Repeater1" runat="server">
    <ItemTemplate>
        <asp:HiddenField ID="HiddenField1" Value='<%#Eval("Path")%>' runat="server" />
        <img alt="image" style="text-align: center" src='<%#Eval("Path")%>' /></a><asp:CheckBox
            ID="CheckBox1" runat="server" />
        <br></br>
    </ItemTemplate>
</asp:Repeater>   

我真的不明白为什么需要这样做,但这是有效的。

【讨论】:

    【解决方案3】:

    由于引号,我遇到了同样的错误,这就是我修复我的方法

        OnClientClick='<%# "CallToFunc("+ Eval("Val") + 
        ",\"" + Eval("StringVal")  + "\");return false;"'
    

    【讨论】:

    • 说到引号,单引号没有结束引号。
    • 对!谢谢你告诉我。
    【解决方案4】:

    您不能在 html 评论中包含 runat

    (不是本题的问题,但与本题的题目相符)

    假设您有一个想要“注释掉”的 ASP 控件,那么您最终可能会得到一个根本无法显示的页面,如果幸运的话,还会出现“服务器标记格式不正确”异常,或者使用简单的 404-not found 状态码。

    修复:更改 runat,例如像这样:

    <!-- asp.Label   runatX="server" ... -->
    

    【讨论】:

      猜你喜欢
      • 2014-05-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-15
      • 2012-12-14
      相关资源
      最近更新 更多