我的div在我的母版页中充当弹出窗口,称为“ mydiv-clear”。
我在div“ fade”中有我的主页内容。
如果我使用“ return false;”,我可以使用Javascript OnClientClick成功“弹出”我的div(将显示从无显示更改为阻止显示);在我的OnClientClick中以防止回发(div返回显示:回发时无)。
我想对弹出式窗口中的其他功能执行C#OnClick控件。当我有return = false时;在我的OnClientClick中,我无法点击C#OnClick代码。当我删除return = false; 我的页面回发了,我的显示又回到了display = none;。在线解决方案建议将我的按钮移到UpdatePanel控件中,或者使用UseSubmitBehaviour = false,但这些方法都不适合我。
当我突破代码时,以下解决方案将触发我的javascript(出现弹出窗口)导致回发(弹出窗口消失)并触发我的C#。有人可以建议一种方法来防止回发并仍然触发C#吗?谢谢
。网
<asp:Button ID="btnOptOut" OnClientClick="div_show();" UseSubmitBehavior="false" OnClick="btnOptOut_Click" CssClass="btn btn-default" runat="server" Text="Opt Out" />
C#
protected void btnOptOut_Click(object sender, EventArgs e)
{
try
{
_dal.createOptOutRecord(_myuser.id, _myuser.EmailAddress);
//More functionality to go here
}
catch(Exception ex)
{
}
}
Java脚本
function div_show() {
document.getElementById('mydiv-clear').style.display = "block";
document.getElementById('fade').style.opacity = ".1";
}
回发将始终在按钮OnClick
事件上执行。即使它在UpdatePanel中,它仍然会执行(部分)回发。但是,只要div位于外部,UpdatePanel仍然可以工作。
但是有多种方法可以保持div的可见性。第一个例子使用RegisterStartupScript
protected void btnOptOut_Click(object sender, EventArgs e)
{
//call the div_show() function again after postback
ScriptManager.RegisterStartupScript(Page, Page.GetType(), "showDiv", "div_show()", true);
//or set the visibility directly to the div after postback
ScriptManager.RegisterStartupScript(Page, Page.GetType(), "showDiv", "document.getElementById('mydiv-clear').style.display = \"block\";", true);
}
第二个示例使用全局变量。
public string divVisibility = "none";
protected void btnOptOut_Click(object sender, EventArgs e)
{
divVisibility = "block";
}
然后在.aspx文件中
<div id="mydiv-clear" style="display: <%= divVisibility %>">myDiv</div>
第三个示例UpdatePanel
在.aspx页中带有。
<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true"></asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel3" runat="server">
<ContentTemplate>
<asp:Button ID="btnOptOut" OnClientClick="div_show();" UseSubmitBehavior="false" OnClick="btnOptOut_Click" CssClass="btn btn-default" runat="server" Text="Opt Out" />
<asp:Label ID="Label1" runat="server" Text="Does it work?"></asp:Label>
</ContentTemplate>
</asp:UpdatePanel>
<div id="mydiv-clear" style="display: none">myDiv</div>
然后在代码后面。
protected void btnOptOut_Click(object sender, EventArgs e)
{
Label1.Text = "Yes it does!";
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句