我有一个ASP按钮,如下所示:
<asp:Button
ID="btnReset"
runat="server"
OnClientClick = "hideOverlay('<%=pnlOverlay.ClientID %>', '<%=pnlAddComment.ClientID %>');"
CssClass ="btnCancel PopUpButton"
/>
问题是de hideOverlay部分中的asp标签。我没有让它工作。为什么不工作?我该如何解决?
答案 0 :(得分:3)
尝试以下示例
第一个例子
在aspx中
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Button ID="btnReset" runat="server" CssClass="btnCancel PopUpButton" />
<asp:Panel ID="pnlOverlay" runat="server">
</asp:Panel>
<asp:Panel ID="pnlAddComment" runat="server">
</asp:Panel>
</div>
</form>
</body>
</html>
在Codebehind中
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class Default10 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
btnReset.Attributes.Add("onclick", string.Format("hideOverlay('{0}','{1}')", pnlOverlay.ClientID, pnlAddComment.ClientID));
}
}
它将为按钮生成以下来源
<input type="submit" name="btnReset" value="" onclick="hideOverlay('pnlOverlay','pnlAddComment');" id="btnReset" class="btnCancel PopUpButton" />
第二个例子
在Aspx中
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Button ID="btnReset" runat="server" CssClass="btnCancel PopUpButton" OnClientClick=<%# "hideOverlay('" + pnlOverlay.ClientID + "', '" + pnlAddComment.ClientID +"');" %> />
<asp:Panel ID="pnlOverlay" runat="server">
</asp:Panel>
<asp:Panel ID="pnlAddComment" runat="server">
</asp:Panel>
</div>
</form>
</body>
</html>
在CodeBehind
中using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class Default10 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
btnReset.DataBind();
}
}
它将为按钮生成以下来源
<input type="submit" name="btnReset" value="" onclick="hideOverlay('pnlOverlay', 'pnlAddComment');" id="btnReset" class="btnCancel PopUpButton" />
第三个例子
在aspx中
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Button ID="btnReset" runat="server" CssClass="btnCancel PopUpButton" OnClientClick="hideOverlay();" />
<asp:Panel ID="pnlOverlay" runat="server">
</asp:Panel>
<asp:Panel ID="pnlAddComment" runat="server">
</asp:Panel>
</div>
</form>
</body>
<script type="text/javascript" >
function hideOverlay()
{
var pnlOverlayID = '<%= pnlOverlay.ClientID %>';
var pnlAddCommentID = '<%= pnlAddComment.ClientID %>';
//Do your stuff
}
</script>
</html>
它将生成脚本部分的后续源
<script type="text/javascript" >
function hideOverlay()
{
var pnlOverlayID = 'pnlOverlay';
var pnlAddCommentID = 'pnlAddComment';
//Do your stuff
}
</script>
答案 1 :(得分:0)
尝试在内联代码中将“=”替换为“#”。例如&lt;%= pnlOverlay.ClientID%&gt; =&gt; &lt;%#pnlOverlay.ClientID%&gt; ,以便在编译时实例化 ClientId 。
OnClientClick仅用于调用客户端脚本,例如javascript代码。如果您尝试在后面的代码中调用方法,则应使用 OnClick 事件。
答案 2 :(得分:0)
将您的代码更改为:
<asp:Button
ID="btnReset"
runat="server"
OnClientClick=<%# "hideOverlay('" + pnlOverlay.ClientID + "', '" + pnlAddComment.ClientID +"');" %>
CssClass ="btnCancel PopUpButton"
/>
如果你使用string.Format()
,甚至更好
OnClientClick=<%# string.Format("hideOverlay('{0}', '{1}');", pnlOverlay.ClientID,pnlAddComment.ClientID) %>
并且不要忘记数据绑定链接,是onclientclick
没有"
,因为这些在<%# %>
标记内使用
答案 3 :(得分:0)
你可以试试这个。
我。在
背后的代码中btnReset.OnClientClick = "hideOverlay'"+pnlOverlay.ClientID+"','"+pnlAddComment.ClientID+"')";
II。第二种方法是使用内联javascript。
<asp:Button ID="btnReset" runat="server" OnClientClick = "newhideOverlay()" CssClass
="btnCancel PopUpButton"/>
<script type="text/javascript">
function newhideOverlay()
{
hideOverlay('<%=pnlOverlay.ClientID %>', '<%=pnlAddComment.ClientID %>');
}
</script>
同时确保在按钮之前加载pnlOverlay和pnlAddComment。