我正在使用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');" />
Intellisense没有显示ListItem的onclick属性(或称为属性?),但确实有效。为什么不显示?还是我太依赖Intellisense了? :-)或者我应该在代码隐藏中声明这些东西?
答案 0 :(得分:2)
在很多时候,你使用的控件和属性都有很大的不同。我知道ASP button
控件会在intellisense中显示onclick
和onclientclick
属性。可能是ASP.NET不完全支持onClick
的{{1}}属性(而不是listitem
/ {{1}上的selectedindexchanged
属性。 / etc控件)
答案 1 :(得分:2)
问题是Web服务器控件的intellisense不显示客户端事件,只列出服务器上引发的事件。如果您为了相同的目的使用HTML服务器控件,您将在Intellisense中看到(客户端JS)事件。
要考虑的另一个问题是选项元素不支持onclick事件(至少在IE中不支持,尽管Firefox支持它很好)。您应该处理onchange
客户端事件。一个例子:
<select id="htmlserverselect" runat="server" onchange="alert(this.value);">
<option value="1">Yes</option>
<option value="2">No</option>
</select>
答案 2 :(得分:1)
ListItem
类没有onclick
属性。
ListItem
似乎实现了IAttributesAccessor
界面,并且还有一个Attributes
集合。这记录为:
获取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>
对于DropDownList
和ListBox
,两个属性都在<Option>
元素上呈现。对于RadioButtonList
,onclick
元素会在<input type="radio">
元素上呈现,但无法识别的oncluck
元素会在封闭的<span>
元素上呈现。
请注意,oncluck
事件从未被触发过。
- )
答案 3 :(得分:0)
你在intellisense中没有看到它的原因是因为“onclick”不是ASP.Net。您会注意到,如果您执行以下操作:
<asp:ListItem Value="1" Text="Yes" Secret="Yes" onclick="alert('TEST1');" />
<asp:ListItem Value="0" Text="No" Secret="No" onclick="alert('TEST2');" />
如果你看看渲染到html的内容,你会看到“秘密”属性。因此,虽然ASP.Net将呈现您放置的任何属性,但它只会为ASP.Net属性提供智能感知。
就编码实践而言,我已经看过并使用过多次“onclick”来计算。因此,虽然纯粹主义者可能会对练习产生问题,但我认为这样做很好。
答案 4 :(得分:0)
我们假设我们有一个会话触发的弹出消息 超时类型的事件。
就像你应该拥有的网上银行一样 Web应用程序。
因此,弹出的消息显示你很少 更多时间来完成您的在线体验 安全的网站。
通常情况下,如果你对此没有采取任何行动,请参阅 大约在消息弹出的同时,应用程序将会 签你。
在客户端,您有JavaScript用于计时 那些行动。
现在,让我们说出来的按钮是 叫做“btnSignOut”。
如果你想从a触发相同的动作 JS的一行,在超时时,你应该有这样的东西:
if(timeout){
;
}
这将触发与点击“btnSignOut”相同的事件 LinkButton的。