js调用.NET服务器控件及C#后台方法

本文深入探讨了在JS前台页面直接调用.NET控件ID属性时可能出现的问题,并提供了正确的调用方法。同时,解决了一个在web用户控件中JS调用C#后台方法无法调用的疑惑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在js前台页面直接调用.NET控件的ID属性很容易出问题,为什么这么说呢,我们知道一个.NET控件,它有ID,UniqueID(服务器ID,只读),ClientID(客户端ID,只读)三种唯一标记方式。我甚至发现一些有过开发经验的人都会犯这样的错误,他直接在js中调用.NET服务器控件的ID,如:<%= TextBox1%> ,一开始可能没发现什么不妥,但是一旦只要该服务器控件有了父容器控件,这时杯具就发生了。我们知道,如果.net服务器控件存在父容器控件,那么它会自动将父容器的ID作为服务器控件ID命名的一部分。客户端ID是通过_相连,而服务器ID是通过$相连。如:ID:TextBox 、ClientID:panel1_TextBox1、UniqueID:panel$TextBox1

以下调用方法是正解:

在C#后台代码中添加:

protected void Page_Load(object sender, EventArgs e)
{
Page.ClientScript.RegisterArrayDeclaration("IDArray", string.Format("'{0}','{1}','{2}','{3}'", tvAll.ClientID, tvSelect.ClientID,selectEmployeTable.ClientID,rowIdHid.ClientID));

}

在js前台调用:

document.getElementById(IDArray[3]).value ;

另外我有个疑惑,这是我在项目开发中碰到的一个新问题,在web用户控件中,js调用C#后台方法会调用不到,而在普通的aspx.cs页面中可以。求高手解释!

后台带参数的C#方法

public string Show(string name)
{
return name + " Hello World!";
}

前台js调用:

var v="abc";

var s='<%=Show(" '+v+'")%>';

alert(s);

后台不带参数的C#方法

public string Show()
{
return “Hello World!";
}

前台js调用:

var v='<%=Show()%>';

alert(v);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值