我想用asp.net webfoms使用jQuery。我是否需要获得一个特殊的工具包,以便.net控件吐出友好的控制ID?Webforms和jQuery,如何匹配ID的?
原因是,我不想写javascript引用我的html ID,如control_123_asdfcontrol_234。
这是在版本3.5中解决? (我记得读过你必须得到一些特殊的DLL,这使ID的友好)。
我想用asp.net webfoms使用jQuery。我是否需要获得一个特殊的工具包,以便.net控件吐出友好的控制ID?Webforms和jQuery,如何匹配ID的?
原因是,我不想写javascript引用我的html ID,如control_123_asdfcontrol_234。
这是在版本3.5中解决? (我记得读过你必须得到一些特殊的DLL,这使ID的友好)。
您可以使用myControlId = "<%= myControl.ClientID %>";
输出用于在Javascript中引用它的(非友好的)id。
这就是如果JavaScript是内嵌在我的.aspx页面,但我的将是一个单独的.js文件'不会被解析。 – Blankman 2008-11-04 13:19:09
有很多方法可以用jQuery选择元素。你可以做一个小心的标签/类名选择。
我不知道有什么方法可以在ASP.NET 4.0之前解决id本身的问题。当然你可以试试ASP.NET MVC Framework。
虽然我还没有听说过新的“特殊的DLL”你们谈论一个简单的方法是使用
var myControlId;
在你单独的js文件,然后在客户端的ID分配给该变种在aspx/ascx。
我太讨厌服务器ID:s ... ASP.NET MVC是解决所有使asp.net webforms(ViewState等等)困扰我的东西的解决方案。
您可以将一个独特的属性附加到您的控件(我不确定您是否可以在不扩展基础Web控件的情况下执行此操作;快速搜索revealed only this),然后使用“element [attribute:value]”选择器。
您也可以重写扩展类中的控件的UniqueName和/或ClientID属性并返回实际的ID。
MyTextBox : Web.UI.TextBox
{
// This modifies the generated 'name' attribute
override UniqueID { get { return ID; } }
// This modifies the generated 'id' attribute
override ClientID { get{ return ID; } }
}
我发现的最简单的方法就是要匹配的大多数控制错位ID结束。知道是单选按钮列表和复选框列表的例外 - 你必须有点棘手。
但是,如果你有这样的在.aspx页面:
<asp:TextBox ID="txtExample" runat="server" />
那么你的jQuery不难发现,控制,即使它是由母版页呈现错位,这样的:
$("[id$=txtExample]")
$=
运算符匹配字符串的末尾,名称总是位于前面。一旦你这样做,你可以得到这样的实际损坏的ID:
$("[id$=txtExample]").attr("id")
然后解析,无论如何你认为合适。
编辑: 这是一个简单的方法,但它可能是更多的性能问题,而不仅仅是让每个控件的类与旧ID相同。
看到这篇文章,杰夫张贴在另一个jQuery的优化问题的链接:
尝试$get('myId')
。 我认为这是在非HTML文档中选择元素的方式。
我猜你的意思是Webforms,而不是winforms? – splattne 2008-11-04 13:27:19
是webforms,mybad。 – Blankman 2008-11-04 13:35:28