使用c#从服务器端打开页面加载事件的模式弹出窗口
Posted
技术标签:
【中文标题】使用c#从服务器端打开页面加载事件的模式弹出窗口【英文标题】:Open modal Popup on pageload event from server side using c# 【发布时间】:2018-01-01 15:07:21 【问题描述】:我想在页面加载事件的某些特定条件下显示模式弹出窗口,但它现在正在工作。
这是我的modalPopup:
<script type="text/javascript">
function openModal(message, header, url)
$('#myModal').modal('show');
$('#lblMasterMessage').html(header);
$('#lblMasterbodyMessage').html(message);
$('#myModal').on('hidden.bs.modal', function(e)
if (url != '')
window.location = url;
);
</script>
<asp:Content ID="Content2" ContentPlaceHolderID="BodyContentPlaceHolder" runat="Server">
<div class="modal fade" id="myModal" runat="server">
<div class="modal-dialog">
<div class="modal-content" style="width: 400px; margin: 0 auto;">
<div class="modal-header" runat="server">
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span></button>
<h4 class="modal-title">
<label id="lblMasterMessage"></label>
</h4>
</div>
<div class="modal-body">
<label id="lblMasterbodyMessage"></label>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-primary" data-dismiss="modal" runat="server">Close</button>
</div>
</div>
</div>
</div>
</asp:Content>
从后端调用模态弹出窗口:
protected void Page_Load(object sender, EventArgs e)
if (dt.Rows.Count > 0)
BindGrid();
else
string message = "Files are not Generated!";
string header = "Info";
ScriptManager.RegisterStartupScript(this, this.GetType(), "popup","openModal('" + message + "','" + header + "','MemberHomePage.aspx');", true);
//ScriptManager.RegisterStartupScript(this, this.GetType(), "popup", "alert('Business Operation Files are not Generated!'); window.location ='MemberHomePage.aspx';", true);
当条件满足时,我无法显示弹出窗口。任何帮助将不胜感激。
【问题讨论】:
我认为这应该可以工作,除非您想在部分回发时显示弹出窗口或弹出模型的 ID 已更改。检查您的模型 ID 那个JavaScript函数openModal(message, header, url)
触发了吗?
是的,我正在通过 javascript 触发。
【参考方案1】:
div
表示模态在服务器上运行,因此 ASP.NET 生成它的 ID。这意味着,当页面被渲染时,modal 的 ID 不是myModal
,而是类似于ctl00_Content2_myModal
。
因此,jQuery 无法在线找到您的 div
$('#myModal').modal('show');
将该行更改为
$('#<%= myModal.ClientId %>').modal('show');
或尝试通过类名访问div
,例如$(".modal")
编辑:
您尝试通过 ID 查找的其他控件也会遇到同样的问题,例如 lblMasterMessage
、lblMasterbodyMessage
等。
【讨论】:
【参考方案2】:你可以试试这个
// add this code below your javascript function
openModal('<%=message %>', '<%=header %>', 'MemberHomePage.aspx');
【讨论】:
这个具体放在哪里以及如何传递参数? 你可以在javascript函数下面添加上面的代码,并在那里打印你的message
和header
变量
但我想从服务器端传递消息以上是关于使用c#从服务器端打开页面加载事件的模式弹出窗口的主要内容,如果未能解决你的问题,请参考以下文章