js调用.NET服务器控件及C#后台方法
在js前台页面直接调用.NET控件的ID属性很容易出问题,为什么这么说呢,我们知道一个.NET控件,它有ID,UniqueID(服务器ID,只读),ClientID(客户端ID,只读)三种唯一标记方式。我甚至发现一些有过开发经验的人都会犯这样的错误,他直接在js中调用.NET服务器控件的ID,如: ,一开始可能没发现什么不妥,但是一旦只要该服务器控件有了父容器控件,这时杯具就发生了。我们知道,如果
在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);
更多推荐
所有评论(0)