ASP.NET Intellisense与客户端属性
我正在使用Javascript深入ASP.NET中的更多客户端内容,希望有人能解释一些困扰我的问题。为什么intellisense没有显示.NET控件的所有属性/属性?例如,RadioButtonListControl中的ListItem:ASP.NET Intellisense与客户端属性,asp.net,intellisense,Asp.net,Intellisense,我正在使用Javascript深入ASP.NET中的更多客户端内容,希望有人能解释一些困扰我的问题。为什么intellisense没有显示.NET控件的所有属性/属性?例如,RadioButtonListControl中的ListItem: <asp:ListItem Value="1" Text="Yes" onclick="alert('TEST1');" /> <asp:ListItem Value="0" Text="No" onclick="alert('TEST2'
<asp:ListItem Value="1" Text="Yes" onclick="alert('TEST1');" />
<asp:ListItem Value="0" Text="No" onclick="alert('TEST2');" />
Intellisense不显示ListItem的onclick属性(或者称为属性?),但它确实有效。为什么不显示?还是我太依赖智能感知了?:-)还是应该在代码隐藏中声明这些内容?这在很大程度上取决于您使用的控件和属性。我知道ASP
按钮
控件将在intellisense中显示onclick
和onclientclick
属性。可能是ASP.NET不完全支持listitem
的onClick
属性(与listbox
/dropdownlist
/etc控件上的selectedindexchanged
属性相反)listitem
类没有onClick
属性
似乎ListItem
实现了IAttributesAccessor
接口,并且还有一个属性
集合。记录如下:
获取该类不直接支持的ListItem的属性名称和值对的集合
以这种方式放置在标记上的属性在呈现控件时呈现。控制的细节有所不同。我尝试了一个包含以下内容的页面:
<asp:DropDownList ID="_ddl1" runat="server" >
<asp:ListItem Text="Item 1" Value="Item1" onClick="foox();" oncluck="bar(this);" />
</asp:DropDownList>
<asp:ListBox ID="_listBox1" runat="server">
<asp:ListItem Text="Item 1" Value="Item1" onClick="foox();" oncluck="bar(this);" />
</asp:ListBox>
<asp:RadioButtonList ID="_radioList1" runat="server">
<asp:ListItem Text="Item 1" Value="Item1" onClick="foox();" oncluck="bar(this);" />
</asp:RadioButtonList>
<asp:ListItem Value="1" Text="Yes" Secret="Yes" onclick="alert('TEST1');" />
<asp:ListItem Value="0" Text="No" Secret="No" onclick="alert('TEST2');" />
对于下拉列表
和列表框
,这两个属性都在
元素上呈现。对于RadioButtonList
,在
元素上呈现onclick
属性,但在封闭的
元素上呈现未识别的onclick
元素
请注意,oncluck
事件显然从未触发
;-) 在intellisense中看不到它的原因是“onclick”不是ASP.Net。您会注意到,如果您执行以下操作:
<asp:DropDownList ID="_ddl1" runat="server" >
<asp:ListItem Text="Item 1" Value="Item1" onClick="foox();" oncluck="bar(this);" />
</asp:DropDownList>
<asp:ListBox ID="_listBox1" runat="server">
<asp:ListItem Text="Item 1" Value="Item1" onClick="foox();" oncluck="bar(this);" />
</asp:ListBox>
<asp:RadioButtonList ID="_radioList1" runat="server">
<asp:ListItem Text="Item 1" Value="Item1" onClick="foox();" oncluck="bar(this);" />
</asp:RadioButtonList>
<asp:ListItem Value="1" Text="Yes" Secret="Yes" onclick="alert('TEST1');" />
<asp:ListItem Value="0" Text="No" Secret="No" onclick="alert('TEST2');" />
如果查看呈现为html的内容,您将看到“Secret”属性。因此,尽管ASP.Net将呈现您放入其中的任何属性,但它只为ASP.Net属性提供intellisense
就编码实践而言,我已经看到并使用“onclick”太多次了。因此,虽然纯粹主义者可能会对这种做法有问题,但我认为使用它是可以的。问题在于intellisense for Web服务器控件不显示客户端事件,只列出服务器上引发的事件。如果将HTML服务器控件用于相同的目的,您将在Intellisense中看到(客户端JS)事件
另一个要考虑的问题是OnCutter事件不支持选项元素(至少不在伊江,虽然Firefox支持它很好)。您应该处理
onchange
客户端事件。例如:
<select id="htmlserverselect" runat="server" onchange="alert(this.value);">
<option value="1">Yes</option>
<option value="2">No</option>
</select>
对
不
假设有一条由会话触发的弹出消息
超时类型的事件
就像你应该为你的网上银行
web应用程序
因此,弹出的信息显示,您几乎没有
用更多的时间完成您的在线体验
安全网站
通常情况下,如果你对此不采取任何行动,在
大约在消息弹出的同时,应用程序将
签了你
在客户端,您可以使用JavaScript进行计时
这些行动
现在,让我们假设您退出的按钮是
称为“btnSignOut”
如果您想从一个
JS行,在超时时,您应该有如下内容:
这将触发与单击“btnSignOut”相同的事件
链接按钮
Hmmm。。。所以我不应该使用它们吗?我已经测试过了,它也能工作,但是如果我将来可能会遇到意想不到的结果,我不想弄乱它。我喜欢使用ASP.NET,我刚刚开始接触Javascript,它真的很震撼,但出于某种原因,这两个版本似乎没有发挥出应有的作用。我应该在上面的评论中添加一条免责声明:我完全意识到我自己的经验不足可能是问题所在。约翰·桑德斯用一个更权威的答案总结了这一点。如果它对你有效,它也会对你有效,但我不建议你做一些实际上不受支持的事情。我认为你的答案更直接地针对基本问题——智能感知,而@John的答案更笼统。我在回答中也试图这样做+1显然,listitem实现了IChicken接口,并被迫实现了“oncluck”事件:)“注意,oncluck事件从未被触发,显然”哈哈!这一定是真的吗?我在回答中注意到ASP按钮的intellisense显示onClientClick。服务器上未引发该事件?我可能对此感到困惑吗?是的,这是真的,因为OnClientClick是一个“服务器端属性”(不管是什么!),它确保控件在呈现时将onclick属性设置为指定的值。这对于一个特殊的web服务器控件来说是一个方便的度量,因为按钮通常需要在表单提交之前运行一些客户端代码。当你说它只列出在服务器上引发的事件,而这些事件似乎不太正确,因为OnClient Click实际上并没有在服务器上运行。我应该能够使用intellisense on web服务器控件同时看到服务器端和客户端事件,这似乎是一个有效的观点。如果我能做到,为什么不告诉我我能做到?这不是智力的观点吗?