C# 在ASP.NET中将值传递给javascript
我有一个ASP文本框控件,当OnClick事件发生时,我需要在其中执行一些javascript函数。我需要向javascript函数传递该页面上其他控件的两个ID。我的文本框标记如下所示:C# 在ASP.NET中将值传递给javascript,c#,javascript,asp.net,C#,Javascript,Asp.net,我有一个ASP文本框控件,当OnClick事件发生时,我需要在其中执行一些javascript函数。我需要向javascript函数传递该页面上其他控件的两个ID。我的文本框标记如下所示: <asp:TextBox ID="txtMonthDisplay" runat="server" Style="border-top: none; border-left: none; border-right: none; border-bottom: solid 1px blue; cursor:
<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函数时,我都会设置一个警报来检查传入的值,并且它们非常简单。而不是那些控件的实际ID
我在这里遗漏了什么,或者做得不对?我不太熟悉asp.net,所以服务器端和客户端对我来说有点模糊
谢谢嗯,您的标记看起来是正确的,我会尝试几件事,首先尝试通过代码添加onclick事件,看看是否添加了id。这样,您就可以知道文本框生成是否正常工作
您也可以在文档之后进行单击绑定来解决这个问题。准备好使用JQuery并将值作为隐藏值保存在表单上。嗯,您的标记看起来是正确的,我会尝试几件事,首先尝试通过代码添加onclick事件,看看是否添加了ID。这样,您就可以知道文本框生成是否正常工作
您还可以通过在文档后执行单击绑定来解决此问题。准备好使用JQuery并将值作为隐藏值保存在表单上。然后从codebehind传递变量:
protected void Page_Load(object sender, EventArgs e){
txtMonthDisplay.Attributes.Add("onClick",
String.Format("ShowBox('{0}','{1}')",
divYear.ClientID,
txtYearDisplay.ClientID));
}
txtMonthDisplay.Attributes["onclick"] = string.Format(
"ShowBox('{0}', '{1}');",
divYear.ClientID,
txtYearDisplay.ClientID);
显示表达式相当于只包含响应.Write(…)
语句的嵌入式代码块。这是显示单个字符串、整型变量或常量等信息的最简单方法
请记住在服务器控件的属性中不能使用显示表达式。这是因为.NET Framework直接编译整个表达式,而不是将内容显示为属性的值
然后从codebehind传递变量:
protected void Page_Load(object sender, EventArgs e){
txtMonthDisplay.Attributes.Add("onClick",
String.Format("ShowBox('{0}','{1}')",
divYear.ClientID,
txtYearDisplay.ClientID));
}
txtMonthDisplay.Attributes["onclick"] = string.Format(
"ShowBox('{0}', '{1}');",
divYear.ClientID,
txtYearDisplay.ClientID);
显示表达式相当于只包含响应.Write(…)
语句的嵌入式代码块。这是显示单个字符串、整型变量或常量等信息的最简单方法
请记住在服务器控件的属性中不能使用显示表达式。这是因为.NET Framework直接编译整个表达式,而不是将内容显示为属性的值
您不能
响应。将(
是响应的缩写。将写入服务器标记(通常)
相反,您可以在codebehind中编写onclick处理程序:
protected void Page_Load(object sender, EventArgs e){
txtMonthDisplay.Attributes.Add("onClick",
String.Format("ShowBox('{0}','{1}')",
divYear.ClientID,
txtYearDisplay.ClientID));
}
txtMonthDisplay.Attributes["onclick"] = string.Format(
"ShowBox('{0}', '{1}');",
divYear.ClientID,
txtYearDisplay.ClientID);
顺便说一下,您不需要javascript:
前缀。这仅在设置链接的href
以执行脚本时才有必要。事件处理程序(如onclick
)不需要它。您不能响应。将写入(
是响应的缩写。将写入服务器标记(通常)
相反,您可以在codebehind中编写onclick处理程序:
protected void Page_Load(object sender, EventArgs e){
txtMonthDisplay.Attributes.Add("onClick",
String.Format("ShowBox('{0}','{1}')",
divYear.ClientID,
txtYearDisplay.ClientID));
}
txtMonthDisplay.Attributes["onclick"] = string.Format(
"ShowBox('{0}', '{1}');",
divYear.ClientID,
txtYearDisplay.ClientID);
顺便说一下,您不需要javascript:
前缀。这仅在设置链接的href
以执行脚本时才有必要。事件处理程序(如onclick
)不需要它,但我遇到了一些问题。所以我想我应该试试别的。它打开了一个全新的蠕虫罐头。这个文本框是静态的,但我使用jQuery在加载时在页面上创建了多个(可能)文本框。每当我使用C#代码在页面上添加属性(ShowBox…)时,它会完全清除我使用jQuery设置到其他动态文本框的所有属性。这只是IEThrough代码中的一个问题,但我遇到了一些问题。所以我想我应该试试别的。它打开了一个全新的蠕虫罐头。这个文本框是静态的,但我使用jQuery在加载时在页面上创建了多个(可能)文本框。每当我使用C#代码在页面上添加属性(ShowBox…)时,它会完全清除我使用jQuery设置到其他动态文本框的所有属性。IEok中唯一有意义的问题是它是Response.Write的缩写。如果我在页面加载期间从codebehind传递它,它似乎会清除使用jQuery设置的动态创建的文本框的属性。因此,我的所有文本框最终都会将原始文本框的值传递给函数。这只发生在IE中。对此有什么想法吗?请确保仅在页面未被发回时设置内容。@加密-似乎使用数据绑定语法(
)在某些情况下有效,但我记不起这些情况是什么。关于jQuery问题,这听起来像是一个新问题。ASP.Net编写的HTML是否像预期的那样包含实际的clientID?好的,这是Response.Write的简写。如果我在页面加载期间从codebehind传递它,它似乎会清除使用jQuery设置的动态创建的文本框的属性。因此,我的所有文本框最终都会将原始文本框的值传递给函数。这只发生在IE中。对此有什么想法吗?请确保仅在页面未被发回时设置内容。@加密-似乎使用数据绑定语法(
)在某些情况下有效,但我记不起这些情况是什么。关于jQuery问题,这听起来像是一个新问题。ASP.Net编写的HTML是否像预期的那样包含实际的clientID?