You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET如何在点击事件中修改LinkButton的href属性并填入文本框内容

实现方案

有两种常用实现方式,可根据你的业务场景选择:

1. 服务端点击事件实现(走你定义的LBPrinter_Click回发逻辑)

直接在后台对应的点击事件方法中,通过Attributes属性修改href值即可,示例C#代码如下:

protected void LBPrinter_Click(object sender, EventArgs e)
{
    // 获取文本框输入内容,可自行添加空值校验逻辑
    string barcode = TxbBarcode.Text.Trim();
    string altura = TxbAltura.Text.Trim();
    // 拼接href属性值
    string printHref = $"print://1234/{barcode}/{altura}";
    // 给LinkButton赋值href
    LBPrinter.Attributes["href"] = printHref;
    
    // 如果赋值后需要直接触发跳转执行print协议,可加下面这句
    ClientScript.RegisterStartupScript(this.GetType(), "print", $"window.location.href='{printHref}';", true);
}

注意:如果不需要其他服务端逻辑,更推荐用客户端实现,无需页面回发,体验更好

2. 客户端JS实现(无需回发)

可以直接监听文本框输入或者LinkButton的点击事件,在前端动态修改href值,示例代码如下:
首先给LinkButton去掉服务端OnClick属性,添加客户端点击事件:

<asp:LinkButton runat="server" ID="LBPrinter" href="print://1234/TxbBarcode/TxbAltura" OnClientClick="return updateHrefBeforePrint()"></asp:LinkButton>

然后添加JS逻辑:

function updateHrefBeforePrint() {
    // 获取两个文本框的值,注意如果没有设置ClientIDMode="Static",需要用<%= TxbBarcode.ClientID %>获取真实客户端ID
    const barcode = document.getElementById('TxbBarcode').value.trim();
    const altura = document.getElementById('TxbAltura').value.trim();
    // 空值校验
    if(!barcode || !altura) {
        alert('请输入完整参数');
        return false; // 阻止点击跳转
    }
    // 动态修改href
    const printBtn = document.getElementById('LBPrinter');
    printBtn.href = `print://1234/${barcode}/${altura}`;
    return true; // 允许跳转执行print协议
}

内容的提问来源于stack exchange,提问作者Tiago Silva

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.10 13:30:01