如何从HTML向JavaScript传递参数?ASP.NET代码传值失败
解决ASP.NET按钮传TextBox值到弹窗页面的问题
你的代码核心问题是URL参数拼接的语法错误,加上没对特殊字符做编码,导致参数无法正确传递:
问题点拆解
- OnClientClick里的
'webform5.aspx?alamat=+<%=TextBox5.Text %>+'多了多余的+号,会让最终URL变成webform5.aspx?alamat=+xxx+,目标页面拿到的是带前后+的错误值 - 没对TextBox内容做URL编码,如果内容包含空格、中文或特殊字符,会直接破坏URL结构
修正后的代码
按钮部分(关键修正)
<asp:Button ID="Button2" OnClientClick="createPopupWin('webform5.aspx?alamat=' + encodeURIComponent('<%=TextBox5.Text %>'),'Google Map', 1200, 650); return false;" runat="server" Text="Map" />
原JavaScript函数(无需修改)
function createPopupWin(pageURL, pageTitle, popupWinWidth, popupWinHeight) { var left = (screen.width - popupWinWidth) / 2; var top = (screen.height - popupWinHeight) / 4; var myWindow = window.open(pageURL, pageTitle, 'resizable=yes, width=' + popupWinWidth + ', height=' + popupWinHeight + ', top=' + top + ', left=' + left); }
目标页面获取参数
在WebForm5.aspx的后台代码里,用以下方式获取传递的参数:
string alamat = Request.QueryString["alamat"]; // 如果是中文,确保页面编码为UTF-8,避免乱码
额外说明
- 加上
return false;是为了阻止ASP.NET按钮默认的服务器回发行为,避免弹窗被浏览器拦截或页面刷新 encodeURIComponent()会对特殊字符(空格、中文、&等)做URL编码,保证参数传递的完整性
内容的提问来源于stack exchange,提问作者bux
相关产品推荐
相关产品推荐

