我对以前只是简单的HTML和Javascript的现有应用程序进行了一些更改.为了添加服务器端功能,我选择了ASP.NET,并利用了Master Page概念.不幸的是,在一个巨大的Web表单上,控件ID都被"ctl00 $ ContentBody $"前缀所破坏.我在所有INPUT控件上添加了一个runat ="server",它改变了ID.现在已经更改了ID,Javascript(编写得很糟糕,我甚至无法阅读它,而且我对JS很有经验)完全被破坏了.
那么,我怎样才能防止这种废话被渲染到HTML中呢?我希望以某种方式能够创建一个继承HtmlGenericControl的类(我没有使用Web控件,我只是在每个输入标记的runat ="server"上添加)并以某种方式覆盖了粘贴这个"容器ID"的逻辑ID和NAME属性的开头.然后我可以在web.config中使用tagMapping来进行全局更改.这可能吗?
我正在评估将旧的基于框架集的 asp.net 网站转换为使用母版页。唯一阻碍我的是更新每个页面以处理名称修改所需的大量工作。我的大部分问题都与引用硬编码 Id 的 javascript 有关。
有没有办法让我告诉 ASP.Net 对于我不希望发生重整的特定内容区域。让我来处理名称冲突。
笔记
我知道 .Net 4.0 对此有一个详细的解决方案。我想要一个不涉及等待的解决方案,需要是 .Net 3.5。
更新
对母版页的开源替代品有什么建议可以让我直到 .Net 4.0?或者一个黑客工作解决方案来解决这个问题。谢谢
ASP.NET主页面内容页面的元素似乎都是由ASP.NET页面渲染器更改或添加了ID.
这会根据原始元素ID中断所有CSS样式.
这是认真的工作原理吗?如果是这样,有办法吗?
在HtmlSelect和DropDownList之间,哪一个具有更好的性能(初始化和渲染更快)?有什么指导方针何时使用?
另一个问题是,如果我要访问的JScript从选择控件的值,我只是在绑定使用HtmlSelect(因为ID不改变),或是否有任何方式强迫DropDownList的使用我的ID,而不是一个像" ctl00_MainContainerContentPlaceHolder_Day1DropDownList"?