在 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 所以服务器与客户端对我来说有点模糊。

谢谢

在 ASP.NET 中将值传递给javascript

您不能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 之后执行单击绑定并将值作为表单上的隐藏值来解决此问题。