奇怪的解析错误 - 服务器标记格式不正确

时间:2012-09-22 13:00:33

标签: asp.net parsing

我有点陷阱我一直试图找出这个问题多年来一直存在,它在此之前就已经突然停止了。我得到的错误是:

  '/'应用程序中的服务器错误。   分析器错误    说明:解析为此请求提供服务所需的资源时发生错误。请查看以下特定的解析错误详细信息并相应地修改源文件。

     

分析程序错误消息:服务器标记格式不正确。

     

来源错误:

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;

    }

有什么想法吗?谢谢

2 个答案:

答案 0 :(得分: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")%>'

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

答案 1 :(得分:0)

您可以调整您的代理人 - 我建议您使用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) 
{

}

Nota:问题在于你的代表签名