【发布时间】:2009-09-10 18:25:43
【问题描述】:
有时我在使用 ASP.Net 时会感到绝望 - 另一个不应该的问题!
在 Web 表单上有一个 ASP 表。在 ASP 表中有一个用户控件,我正在对其进行一些更改。在 ASP 表中有一个文本框....到目前为止没有任何异常!
在后面的代码中,作为 Page_Load 的一部分,我需要访问文本框的 ClientID 以注册一些 javascript...所以我这样做了,而 javascript 似乎可以完成它需要做的一切。大家都很开心。
不,不,显然每个人都不高兴,ASP.Net 本身很不高兴!
在访问 ClientID 时,源中出现的 id 是:
myControl_myTextBox
注释掉访问 ClientID 的行意味着 id 呈现为:
ctl00_BodyPlaceHolder_myControl_myTextBox
访问 ClientID 的行如下所示:
jsBuilder.AppendFormat(@"var filter = new TBFilter($(""#{0}"")[0]);", myTextBox.ClientID);
这本身并不困扰我,但它打破回发的事实,确实如此!如果您在该文本框中输入内容并点击提交按钮(页面上有一个提交按钮!),它会重新加载页面,但会将默认值放回文本框中并完全忽略您最初拥有的内容。疯狂 - 我没有做过任何特别奇怪和不寻常的事情,为什么它会破坏回发?
【问题讨论】:
-
如果我理解正确的话,文本框的 ClientID 属性最初是 ctl00_BodyPlaceHolder_myControl_myTextBox 但在回发后,ClientID 现在是文本框的 myControl_myTextBox?
-
不抱歉,如果我访问 ClientID 属性,id 会出现 myControl_myTextBox,但如果我注释掉该行,id 会出现 ctl00_BodyPlaceHolder_myControl_myTextBox - 我将编辑问题以反映这一点
-
jsBuilder.AppendFormat(@"var filter = new TBFilter($(""#{0}"")[0]);", myTextBox.ClientID);
-
@IP - 如果您只是将 JavaScript 放入页面并使用 var filter = new TBFilter($("#")[0]); 会发生什么你仍然得到相同的结果吗?
标签: asp.net controls page-lifecycle