我想在asp.net webfoms中使用jQuery。我是否需要获得一个特殊的工具包,以便.net控件吐出友好的Control ID?
原因是,我不想编写引用我的html ID的javascript,如control_123_asdfcontrol_234。
这是否已在3.5版中解决? (我记得读过你必须得到一些让ID友好的特殊dll。)
答案 0 :(得分:15)
我发现最简单的方法就是匹配大多数控件的损坏ID的末尾。知道的例外是radiobutton列表和复选框列表 - 你必须对它们有点麻烦。
但如果您在.aspx页面中有此内容:
<asp:TextBox ID="txtExample" runat="server" />
然后你的jQuery可以很容易地找到那个控件,即使它被主页面渲染所破坏,就像这样:
$("[id$=txtExample]")
$=
运算符匹配字符串的结尾,名称重整始终位于前面。完成后,您可以获得这样的实际损坏ID:
$("[id$=txtExample]").attr("id")
然后解析你认为合适的东西。
编辑: 这是一种简单的方法,但它可能更像是一个性能损失,而不仅仅是为每个控件提供与旧ID相同的类。
看到这篇文章,Jeff发布了另一个jQuery优化问题的链接:
答案 1 :(得分:10)
您可以使用myControlId = "<%= myControl.ClientID %>";
输出用于在Javascript中引用它的(非友好)ID。
答案 2 :(得分:3)
使用jQuery选择元素有很多种方法。你可以为一个人做一个仔细的Tag / ClassName选择。
在ASP.NET 4.0之前,我不知道有任何方法可以搞乱id的问题。当然,您可以随时尝试ASP.NET MVC Framework。
答案 3 :(得分:1)
虽然我没有听说过这个新的“特殊dll”你谈到一个简单的方法就是使用
var myControlId;
在单独的js文件中,然后将客户端ID分配给aspx / ascx中的该var。
我也讨厌服务器ID:s ... ASP.NET MVC是使用asp.net webforms(Viewstate等等)让我烦恼的所有事情的解决方案。
答案 4 :(得分:0)
您可以为控件附加一个唯一属性(我不确定您是否可以在不扩展基本Web控件的情况下执行此操作;快速搜索revealed only this)然后使用“element [attribute:value] “选择器。
答案 5 :(得分:0)
您还可以覆盖扩展类中控件的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; } }
}
答案 6 :(得分:0)
试试@component('mail::layout')
{{-- Header --}}
@slot('header')
@component('mail::header', ['url' => config('app.url')])
{{ config('app.name') }}
@endcomponent
@endslot
{{-- Body --}}
{{ $slot }} test
{{-- Subcopy --}}
@isset($subcopy)
@slot('subcopy')
@component('mail::subcopy')
{{ $subcopy }}
@endcomponent
@endslot
@endisset
{{-- Footer --}}
@slot('footer')
@component('mail::footer')
© {{ date('Y') }} {{ config('app.name') }}. All rights reserved.
@endcomponent
@endslot
@endcomponent
。
我认为这是在非HTML文档中选择元素的方法。