我似乎事先多次管理同样的任务;但是目前我完全陷入了最简单的事情,这让我感到非常愤怒
我需要将javascript分配给ASP.Net linkbutton(或超链接,无所谓) 什么似乎更容易?
我用这样的代码做了十亿次
//lbHeader.Attributes.Add("onclick",
// string.Format("ToggleSelectionPopup('{0}');return false;", panelContainer.ClientID));
但它不起作用。我得到的HTML包含javascript:__ doPostback(blahblahblah)并忽略了我的客户端“onclick”功能。相反,当我点击按钮时页面进入回发(尽管“onclick”功能在“视图页面源”HTML中正确附加
我尝试应用一些技巧和方法,如下面的
1)用超链接替换LinkButton - 效果仍然相同,当我点击href时页面转发到“NavigateURL”。
2)在声明性布局中分配“OnClientClick”properety - 效果相同,页面无论如何转到后面并忽略“onclick”
3)将“javascript:ToggleSelectionPopup(blahblahblah)”指定为超链接的NavigateURL,并指定为linkButton的PostBackURL。不起作用
两种技巧都没有帮助。我做错了什么想法?
我只需要摆脱该控件的糟糕服务器性能,但我该怎么做呢?当然,我可以手动制作LiteralControl,但我不想使用这种粗略的方法。
高度赞赏
答案 0 :(得分:4)
您可以使用LinkButton控件并向OnClientClick添加javascript函数调用。这将在客户端验证之前和回发之前调用(显然)。如果您需要在验证后但在回发之前执行此操作,那么您可以使用'Page_ClientValidate()'在OnClientClick中手动调用客户端验证;
<script type="text/javascript">
function someJsYouWant()
{
alert('HelloSO');
}
</script>
<asp:LinkButton ID="btnSearch"
runat="server"
OnClientClick="Page_ClientValidate(); someJsYouWant();"
onclick="btnSearch_OnClick">Search</asp:LinkButton>
答案 1 :(得分:1)
ASP.NET控件Button和LinkButton将始终进行回发。您可以使用OnClientClick属性添加的javascript将在回发之前执行,但不会阻止回发。
您可以通过以下方式使用HyperLink控件:
<asp:HyperLink runat="server" ID="hyperlink1" NavigateUrl="JavaScript:alert('!');">Test</asp:HyperLink>
我注意到您使用的是变量名称lbHeader。您确定要将javascript添加到正确的控件而不是某个随机标签吗?
答案 2 :(得分:0)
作为一种选择,您可以尝试 HtmlAnchor 控制。
在onclick属性返回false; 足以停止重定向。
<a href="not_importans.htm" onclick="javascript:someothermethod();return false;">Trial Link</a>
但你的代码看起来不错。你检查LinkButton的HTML输出? 也许其他代码分配给 onclick 属性。
答案 3 :(得分:0)
您是否忘记将 [傻我] "javascript:"
放在字符串的开头?
我用于此类事情的代码如下所示:
myLinkButton.SetAttribute("onclick", "javascript:if(someCondition()) return false;");
...但我猜这与Attributes.Add
几乎完全相同。
您的代码对我来说听起来很合理。我的猜测是该属性在页面生命周期中被其他内容覆盖。在页面的Render中添加一个断点,然后在那里查看LinkButton的属性集合。还要检查呈现的HTML,看看你的javascript是否出现在那里。
答案 4 :(得分:0)
由于我不是在.NET中,而是在Html / Javascript / Ajax中,也许我错了,但是如果你使用onclick方式,对于某些浏览器,你还需要添加: href = “JavaScript的:无效(0);”即可。这样,只会执行onclick。
答案 5 :(得分:0)
有点不清楚你想要做什么。你的javascript中有一个无效的if语句。试试这个(它有效 - 我试过了):
hrefHeader.NavigateUrl = String.Format("javascript:toggleSelectionPopup('{0}');", panelContainer.ClientID);
答案 6 :(得分:0)
您确定在致电toggleSelectionPopup
时没有收到运行时错误吗?
答案 7 :(得分:0)
谢谢大家,我已经解决了这个问题
javascript:void(0)似乎是一种正确的方式。
以下列方式描述我的超链接
<asp:Hyperlink ID="hrefHeader" Text="lbHeader" runat="server" Font-Size="Large" Font-Italic="true"
CausesValidation="False" NavigateUrl="javascript:void(0);" ForeColor="#0033CC" >
</asp:Hyperlink>
“onclick”开始射击。