在 ASP.NET 中将值传递给javascript
本文关键字:javascript 值传 ASP NET | 更新日期: 2023-09-27 18:20:24
我有一个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
以执行脚本时,才需要这样做。 事件处理程序(如 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 直接编译整个表达式,而不是将内容显示为属性的值。
http://support.microsoft.com/kb/976112/en-us
嗯,你的标记看起来是正确的,我会尝试几件事,首先尝试通过代码添加 onclick 事件,看看是否添加了 ID。 这样,您将知道文本框生成是否正常工作。
您还可以通过使用 JQuery 在 document.ready 之后执行单击绑定并将值作为表单上的隐藏值来解决此问题。