Bootstrap模态弹出窗口C#后端代码

6

我正在我的C# ASP.NET项目中使用Bootstrap,并且我想从代码后端显示模态弹出窗口。

在我的页面标题中,我有一个以下的JavaScript函数:

function LoginFail() {
        $('#windowTitleDialog').modal('show');
    }

在我按钮的点击事件中,我调用了以下 JavaScript 代码:

ScriptManager.RegisterClientScriptBlock(this, typeof(System.Web.UI.Page), "LoginFail", "LoginFail();", true);

这不会显示模态弹出窗口。但是,如果我使用类似于alert('登录失败')的东西,它可以正常工作。
请问有人能帮忙解决这个问题吗?
5个回答

14

默认情况下,Bootstrap的JavaScript文件是在关闭body标签之前包含的。

    <script src="vendors/jquery-1.9.1.min.js"></script>
    <script src="bootstrap/js/bootstrap.min.js"></script>
    <script src="vendors/easypiechart/jquery.easy-pie-chart.js"></script>
    <script src="assets/scripts.js"></script>
 </body>

我将这些JavaScript文件放在body标签之前的head部分,并编写了一个小函数来调用模态弹出窗口:

<script src="vendors/jquery-1.9.1.min.js"></script>
<script src="bootstrap/js/bootstrap.min.js"></script>
<script src="vendors/easypiechart/jquery.easy-pie-chart.js"></script>
<script src="assets/scripts.js"></script>

<script type="text/javascript">
function openModal() {
    $('#myModal').modal('show');
}
</script>
</head>
<body>

然后我可以在代码后台使用以下方法调用模态弹出窗口:

protected void lbEdit_Click(object sender, EventArgs e) {   
  ScriptManager.RegisterStartupScript(this,this.GetType(),"Pop", "openModal();", true);
}

4
这是我解决的方法:
脚本函数
<script type="text/javascript">
    function LoginFail() {
        $('#windowTitleDialog').modal();
    }        
</script>
<asp:Button ID="LaunchModal" runat="server" Text="Launch Modal" CssClass="btn" onclick="LaunchModal_Click"/>

请注意,属性data-togle="modal"未设置。

LaunchModal_Click事件中的服务器端代码如下:

ScriptManager.RegisterStartupScript(this, this.GetType(), "LaunchServerSide", "$(function() { LoginFail(); });", true);

我希望您能够从中受益。

救了一个小命,朋友 :) 我希望在内容页内遇到这个问题的人能像你一样将方法包含在 document.ready 中。谢谢。 - Mo Hasan

0

我在aspx页面中这样做:

<asp:Panel ID="MessagePanel" runat="server" CssClass="hide"  EnableViewState="false">
<div class="modal-header">
<asp:Button type="button" ID="btnClose" runat="server" data-dismiss="modal" Text="x" />
</div>
<div class="modal-body">
<h4>What's new in this version</h4>
... rest of bootstrap modal stuff....
</div>
</asp:Panel>

然后在代码后端,在任何事件(如page.load或按钮单击)中显示模态弹出窗口,我只需更改面板的CssClass:

MessagePanel.CssClass = "modal fade in"

不需要使用js或ScriptManager。


0

我有同样的问题,尝试寻找在线解决方案,但无法做到。我能够像你说的那样从代码后台调用其他JavaScript函数,但当我添加模态框js函数时,模态框不会显示出来。

我猜测是因为modal.('show')函数没有被调用,因为当我在Chrome中检查模态框元素时,类是modal hide fade而不是modal hide fade IN,其他属性保持不变。

一个可能的解决方案是从代码后台更改这些属性,我的意思是你可以从代码后台执行js所做的操作,这可能不是最好的解决方案,但我不知道还能做什么。通过这样做,我让模态框显示出来了,但无法使效果起作用。


0

我猜想,你正在使用jQuery模态插件之一。在这种情况下,我怀疑插件代码在调用时没有被初始化(这将立即在呈现到页面后进行)。因此,你必须推迟对该函数的调用,直到插件代码被执行。你的情况可能会像这样实现:

ScriptManager.RegisterClientScriptBlock(this, typeof(System.Web.UI.Page), "LoginFail", "$(function() { LoginFail(); });", true);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接