![](/img/trans.png)
[英]How to pass values to an external Javascript script from ASP.NET
[英]Pass values to javascript in ASP.NET
我有一个ASP文本框控件,在发生OnClick事件时,我需要在其中执行一些javascript函数。 我需要将该页面上其他控件的两个ID传递给该javascript函数。 我的文本框标记如下:
<asp:TextBox ID="txtMonthDisplay" runat="server" Style="border-top: none; border-left: none;
border-right: none; border-bottom: solid 1px blue; cursor: pointer; color: Blue;
width: 35px;" EnableViewState="True" MaxLength="3" onClick="javascript: ShowBox('<%= divYear.ClientID%>', '<%= txtYearDisplay.ClientID %>');"></asp:TextBox>
但是只要它调用javascript函数,我都会设置一个警报来检查传入的值,它们只是<%= txtYearDisplay.ClientID%>和<%= divYear.ClientID%>。 不是这些控件的实际ID。
我在这里想念的是什么,还是做错了? 我对ASP.NET不太了解,所以服务器端与客户端端对我来说有点模糊。
谢谢
您不能将Response.Write
( <%= %>
是Response.Write
缩写)(通常)放入服务器标记中。
相反,您可以在后面的代码中编写onclick处理程序:
txtMonthDisplay.Attributes["onclick"] = string.Format(
"ShowBox('{0}', '{1}');",
divYear.ClientID,
txtYearDisplay.ClientID);
顺便说一句,您不需要javascript:
前缀。 仅在将链接的href
设置为执行脚本时才需href
。 事件处理程序(例如onclick
不需要它。
然后从代码隐藏传递变量:
protected void Page_Load(object sender, EventArgs e){
txtMonthDisplay.Attributes.Add("onClick",
String.Format("ShowBox('{0}','{1}')",
divYear.ClientID,
txtYearDisplay.ClientID));
}
<%= ... %>
显示表达式等效于仅包含Response.Write(…)
语句的嵌入式代码块。 这是显示信息的最简单方法,例如单个字符串,一个int变量或一个常数。
请记住 ,显示表达式不能在服务器控件的属性中使用。 这是因为.NET Framework直接编译整个表达式,而不是将内容显示为属性的值。
嗯,您的标记看起来正确,我将尝试一些方法,首先尝试通过代码添加onclick事件,然后查看是否添加了ID。 这样,您将知道您的文本框生成是否正常工作。
您还可以通过以下方法来解决:在document.ready之后使用JQuery进行单击绑定,并将值作为表单上的隐藏值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.