繁体   English   中英

将值传递给ASP.NET中的javascript

[英]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直接编译整个表达式,而不是将内容显示为属性的值。

http://support.microsoft.com/kb/976112/en-us

嗯,您的标记看起来正确,我将尝试一些方法,首先尝试通过代码添加onclick事件,然后查看是否添加了ID。 这样,您将知道您的文本框生成是否正常工作。

您还可以通过以下方法来解决:在document.ready之后使用JQuery进行单击绑定,并将值作为表单上的隐藏值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM