【问题标题】:Conversion failed when converting the varchar value to data type int将 varchar 值转换为数据类型 int 时转换失败
【发布时间】:2026-01-18 01:35:02
【问题描述】:

我有 GridView 并且在 gridview 中我有一个超链接,我试图将查询字符串传递到另一个页面。 ID 是 INT 类型,但不知道为什么会出现此错误:

将 varchar 值“{0}”转换为数据类型时转换失败 诠释

当我在不使用超链接的情况下自行加载详细信息页面时,它对我有用,但是当我单击超链接时,我会收到上面提到的这个错误。这是我的超链接代码:

<asp:TemplateField>
   <ItemTemplate>
      <asp:HyperLink ID="HyperLink2" Text="VIEW DETAIL" runat="server" NavigateUrl= "~/DET/MARKETING.aspx?ID={0}"  Target="_blank">HyperLink</asp:HyperLink>
   </ItemTemplate>
</asp:TemplateField>

这是详情页的代码:

protected void Page_Load(object sender, EventArgs e)
    {

        if (!Page.IsPostBack)
        {
            string QUEST_SK = Request.QueryString["QUEST_SK"].ToString();
            // string MPost_ID = "773";
            sqlcon.Open();
            sqlcmd = new SqlCommand("SELECT ID, DESC  FROM Table1 WHERE ID= '" + ID+ "'  ", sqlcon);
            da = new SqlDataAdapter(sqlcmd);
            da.Fill(dt);
            sqlcon.Close();
            GridView1.DataSource = dt;
            GridView1.DataBind();
            sqlcon.Close();
        }
    }

【问题讨论】:

  • 当您在查询字符串中注入值时,我认为这是一个问题。您可以粘贴插入 ID 值的代码吗?
  • 我刚刚发布了我的其他代码

标签: c# asp.net gridview hyperlink


【解决方案1】:

你的 SQL 语句中的问题

protected void Page_Load(object sender, EventArgs e)
    {

        if (!Page.IsPostBack)
        {
            string QUEST_SK = Request.QueryString["QUEST_SK"].ToString();
            // string MPost_ID = "773";
            sqlcon.Open();
            sqlcmd = new SqlCommand("SELECT ID, DESC  FROM Table1 WHERE ID= " + ID, sqlcon);
            da = new SqlDataAdapter(sqlcmd);
            da.Fill(dt);
            sqlcon.Close();
            GridView1.DataSource = dt;
            GridView1.DataBind();
            sqlcon.Close();
        }
    }

你可以使用评估

喜欢

<asp:TemplateField>
       <ItemTemplate>
          <asp:HyperLink ID="HyperLink2" Text="VIEW DETAIL" runat="server" NavigateUrl= '<%# Eval("id","~/DET/MARKETING.aspx?ID={0}") %>'  Target="_blank">HyperLink</asp:HyperLink>
       </ItemTemplate>
    </asp:TemplateField>

<asp:TemplateField>
   <ItemTemplate>
      <asp:HyperLink ID="HyperLink2" Text="VIEW DETAIL" runat="server" NavigateUrl= '~/DET/MARKETING.aspx?ID=<%# Eval("ID") %>'  Target="_blank">HyperLink</asp:HyperLink>
   </ItemTemplate>
</asp:TemplateField>

【讨论】:

  • 当我尝试使用它时出现错误:服务器标签格式不正确。