0

我正在为我拥有的链接使用facebox 插件 ,但我也想做一些 onClick。

在此处输入图像描述

我试着做 onclick 事件:( 我用文字来做,也许这就是问题所在)

litWorkplaceButton.Text = "<a class='google-button' href=\"#dialog-form\" id='btnSaveForLater' rel='facebox' onclick=\"addSaveList\" runat='server'>Save for later</a>";

但出现以下错误:

'addSaveList' is undefined

我将我的方法定义为void protected addSaveList(){}

我只是想将项目的 ID 保存在一个表上,所以我需要在页面后面编码!

我尝试使用文字 for <asp:LinkButton>(on code behind) 和 normal 并且错误结果向我展示了这一点:

<asp:LinkButton ID="searchLinkk" runat="server" onclick="searchLink_Click">Search</asp:LinkButton>

<a id="CPHcontent_searchLinkk" href="javascript:__doPostBack(&#39;ctl00$CPHcontent$searchLinkk&#39;,&#39;&#39;)">Search</a>

通常被转换为带有 h​​ref="javascript:__doPostBack" 的标签

但是我必须使用文字,因为我仅在发生事件时才显示此按钮(用户已登录)。

还有其他方法吗,还是我做错了什么?

4

3 回答 3

2

这里的问题是a您通过Literal'Text属性插入到页面中的标记未被识别为服务器控件。该OnClick属性被识别为 javascript 事件。

如果用户未登录,您仍然可以使用您的LinkButton并且只需在其上设置属性。在您的代码后面的方法中添加类似这样的内容:VisiblePage_Load

searchLinkk.Visible = User.IsAuthenticated;

于 2012-09-16T17:22:31.157 回答
1

您的问题是您误解了 Literal 控件的目的。它仅用于将 text/html 注入页面,不能用于动态添加服务器控件。为此,您应该使用占位符控件。

您收到'addSaveList' is undefined错误是因为当浏览器看到“onclick”属性(由于很多原因不应该使用该属性)时,它会尝试将其绑定到名为 的全局 Javascript 方法addSaveList,该方法不存在。

于 2012-09-16T17:19:12.437 回答
0

是的,不要使用内联 JS,它不好的语义,它总会回来困扰你。相反,将脚本放在单独的脚本文件中,在标题中链接到它,并让它包含它。

$(document).ready(function() {

   // Put your method here

});

祝你好运,
-布赖恩

于 2012-09-16T14:57:42.540 回答