【问题标题】:Wierd parse error --The server tag is not well formed奇怪的解析错误——服务器标签格式不正确
【发布时间】:2012-09-22 13:00:33
【问题描述】:

我有点困惑,多年来我一直试图弄清楚这有什么问题,在此之前它一直在工作,然后突然停止了。我得到的错误是:

“/”应用程序中的服务器错误。 解析器错误 说明:解析服务此请求所需的资源时出错。请查看以下特定的解析错误详细信息并适当地修改您的源文件。

解析器错误消息:服务器标签格式不正确。

来源错误:

Line 20:            <tr>
Line 21:               <td width="200" valign="top" align="center">
Line 22:                  <img id="imageShow"  runat="server" src="<%#  DataBinder.Eval(  Container.DataItem, "Link" ) %><%# DataBinder.Eval( Container.DataItem, "ImageName")%>" width="200px" height="150px" onclick ="ShowImage" alt="already done" />
Line 23:               </td>
Line 24:              <td width="200">

源文件:/WebForm1.aspx 行:22

我的代码如下所示:

<asp:Panel id="pnlShowItems" runat="server">
<asp:DataList id="d1Items" runat="server" DataKeyField="ImageID" >
 <ItemTemplate>
 <table width="400" border="0" cellspacing="0" cellpadding="0">
       <tr>
          <td width="200" valign="top" align="center">
           <img id="imageShow"  runat="server" 
src="<%# DataBinder.Eval(  Container.DataItem, "Link" ) %><
%# DataBinder.Eval( Container.DataItem, "ImageName")%>" width="200px" height="150px"
 onclick ="ShowImage" alt="already done" />
          </td>
         <td width="200">
            <strong><%#  DataBinder.Eval(  Container.DataItem, "Link" ) %></strong>
          <br />
         Cost: $<%# DataBinder.Eval(Container.DataItem, "PageDetailID")%><br /><br />
<asp:Button id="btnAddToCart" runat="server"
                   Text="Add To Cart" CommandName="Edit"/>
         </td>
      </tr>
      <tr>
          <td colspan="2" width="400"><hr height="1" />
           </td>
      </tr>
   </table>
</ItemTemplate>
 </asp:DataList>
</asp:Panel>    

后面的代码是这样的:

    protected void Page_Load(object sender, EventArgs e)
    {
        SqlConnection conn;
        SqlCommand comm;
        SqlDataReader reader;

        string connectionString = ConfigurationManager.ConnectionStrings["myConnectionString"].ConnectionString;
        conn = new SqlConnection(connectionString);
        comm = new SqlCommand(@"SELECT ImageID, RTRIM(LTRIM(ImageName ))  ImageName,    Description, 'Images/' Link,    PageDetailID FROM dbo.Images", conn);

        conn.Open();
        reader = comm.ExecuteReader();

        reader.Read();

        d1Items.DataSource = reader;
        d1Items.DataBind();


        conn.Close();

    }




    public void ShowImage() 
    {

        DataListItem dli = this.d1Items.Controls[this.d1Items.Controls.Count - 1] as DataListItem;
        Image img = dli.FindControl("imageShow") as Image;

        Image1.ImageUrl = img.ImageUrl;

    }

有什么想法吗?谢谢

【问题讨论】:

  • Image1 中的 Image1.ImageUrl = img.ImageUrl; 是什么?
  • Image1 只是我要显示的图像,在加载我绑定的图像后。不知道为什么 Image1 看起来像一个类而不是一个标识符
  • 有人吗?我可以帮忙吗?

标签: asp.net parsing


【解决方案1】:

问题就在这里:

src=
   "<%# DataBinder.Eval(Container.DataItem, "Link") %>" +
   "<%# DataBinder.Eval(Container.DataItem, "ImageName")%>"

问题在于引号嵌套在引号内。

请注意,即使是 StackOverflow 的代码格式,也可以看出“Link”和“ImageName”是该行中的一段代码。

尝试用单引号替换双引号:

src=
   '<%# DataBinder.Eval(Container.DataItem, "Link") %>' +
   '<%# DataBinder.Eval(Container.DataItem, "ImageName")%>'

如果这对你没有帮助(老问题),也许它会帮助其他人。

【讨论】:

    【解决方案2】:

    您可以调整您的委托 - 我建议您使用 imageButton

    <asp:ImageButton
     id="imageShow"  
     runat="server" 
     ImageUrl="<%#  DataBinder.Eval(  Container.DataItem, "Link" ) + DataBinder.Eval( Container.DataItem,      "ImageName")%>" width="200px" height="150px" onclick ="ShowImage" alt="already done" />
    
    void ShowImage(Object sender, EventArgs e) 
    {
    
    }
    

    注意:问题在于您的代表签名

    【讨论】:

    • 我试过没用,这把我逼疯了。感谢 Aghilas Yakoub。还有其他建议吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-23
    • 2014-05-18
    • 2011-10-24
    • 1970-01-01
    • 1970-01-01
    • 2010-10-15
    相关资源
    最近更新 更多