ASPX C#控件ID命名 - 使用不同的计算机

时间:2015-08-07 11:01:52

标签: javascript c# asp.net visual-studio-2010

我的机器中有一个ASP TextBox,如下所示:

<INPUT onchange=jsCheckSpecialApproval();id=ctl00_MainContent_SpecialApprovalTB
style="WIDTH: 100%" readOnlymaxLength=10000 name=ctl00$MainContent$SpecialApprovalTB>

但是当我部署到其他机器时,文本框变为如下:

<INPUT onchange=jsCheckSpecialApproval();id=MainContent_SpecialApprovalTB
style="WIDTH: 100%" readOnlymaxLength=10000 name=ctl00$MainContent$SpecialApprovalTB>

显然,不同机器生成的文本框控件ID不同。

(ctl00_MainContent_SpecialApprovalTB = > MainContent_SpecialApprovalTB) 

因此,这会导致某个计算机可能无法读取此文本框的问题,因为我写了getElementById("ctl00_MainContent_SpecialApprovalTB") 在javascript中阅读或设置此文本框。

那为什么会这样呢?有没有办法更好地做到这一点,以及如何防止这种情况再次发生?

非常感谢您的回答!

1 个答案:

答案 0 :(得分:1)

如果必须在javascript中使用控件ID,则必须将客户端ID模式设置为静态。

https://msdn.microsoft.com/en-us/library/system.web.ui.control.clientidmode(v=vs.110).aspx

HomeViewController *homeVC = (HomeViewContller *)[mainStoryboard instantiateViewControllerWithIdentifier:@"HomeViewController"]
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController: homeVC]
[self.window setRootViewController:navController];

ClientID值设置为ID属性的值。如果控件是命名容器,则该控件将用作其包含的任何控件的命名容器层次结构的顶部。

如果你想在aspx页面中定义它,你可以这样做:

Control.ClientIDMode Property