0

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

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

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

源错误:

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;

    }

有任何想法吗?谢谢

4

2 回答 2

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")%>'

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

于 2016-04-08T12:59:44.287 回答
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) 
{

}

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

于 2012-09-22T14:37:31.387 回答