mar*_*dup 21 .net html javascript css c#
我现在是一名信息架构师和JavaScript开发人员,但最近我又重新开始进行后端编码.而且,在尝试将HTML原型集成并与我们基于C#的CMS一起工作的同时,我开始向我们的程序员吹嘘HTML ID属性被.NET任意重写为表单元素.
我可以理解.NET更改ID的代码隐藏推理,但是在尝试开发例如jQuery增强接口时你不能再使用ID这一事实会引起一些摩擦.我该怎么做才能解决这个问题?
我尝试过使用class属性,但这真的很糟糕,不是它的意思,也没有解决.NET有效改变渲染源的问题.这也意味着CSS现在不太有用,创建和维护效率也较低.
任何提示或建议非常感谢 - 任何少数不眠之夜...
Gle*_*ven 25
简短的回答是否定的,对于webforms,id总是可以根据元素的嵌套重写.您可以通过ClientID属性访问id,因此您可以将id设置为页面/控件末尾的脚本中的变量,然后将它们放入jQuery中.
这样的事情:
<asp:button id="ImAButton" runat="server">Click Me</asp:button>
<script type="text/javascript">
var buttonId = "<%=ImAButton.ClientId%>";
$("#"+buttonId).bind('click', function() { alert('hi); });
</script>
Run Code Online (Sandbox Code Playgroud)
这是我知道的黑客攻击,但它会奏效.(我应该注意未启动的,我正在使用原型$ get by id方法)
Jon*_*way 12
一种方法是手动覆盖ID:
public override string UniqueID
{
get { return this.ID; }
}
public override string ClientID
{
get { return this.ID; }
}
Run Code Online (Sandbox Code Playgroud)
Rick Strahl撰写了一篇博客文章,其中提供了有关该方法的更多信息.
查看ASP.Net MVC - 它解决了ASP.Net默认生成的过度杀死对象层次结构.
这个网站是用MVC编写的(我认为) - 看看它的结构.如果我现在正在开展一个新项目,我会先考虑它
如果你坚持使用基本的ASP.Net,那么要小心覆盖ClientID和UniqueID - 它往往会破坏许多Web控件.
我发现的最好方法是将不可读的ClientID传递给Javascript.
| 归档时间: |
|
| 查看次数: |
1570 次 |
| 最近记录: |