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
相关产品推荐
相关产品推荐

