1

我遇到了 jquery modal 对话框的问题。我希望模式框仅在我的数据成功保存到数据库时显示。我正在使用 c# 和 asp.net,在后端我使用的是 Sql server 2008 R2。目前我的数据已成功输入,单击按钮后我显示“数据已成功保存在标签上”,但我只想在单击按钮并保存数据时显示模式框。

我创建了这个脚本

$("#Btndiag").click(function () { $("#myModal").modal(); });

在内容页面正文上我写了这个

<asp:Button ID="Btndiag" runat="server" Text="show dialog" onclick="Btndiag_Click1" />
<div class="modal hide fade" id="myModal">
    <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal">×</button>
        <h3>Settings</h3>
    </div>
    <div class="modal-body">
        <p>Here settings can be configured...</p>
    </div>
    <div class="modal-footer">
        <a href="#" class="btn" data-dismiss="modal">Close</a>
        <a href="#" class="btn btn-primary">Save changes</a>
    </div>
</div>
4

1 回答 1

0

要实现您想要的,您必须在后端处理数据,然后让 ASP.NET 框架为您执行脚本。

为此,您可以ClientScriptManager.RegisterClientScriptBlock在整页回ScriptManager.RegisterClientScriptBlock发期间使用,或者如果控件位于UpdatePanel.

C#代码:

protected void Btndiag_Click1(object sender, EventArgs e)
{
    // process database

    // verify results
    if (success)
    {
       ClientScriptManager.RegisterClientScriptBlock(this, "Btndiag_Click1", "$('#myModal').modal();", true);
    }
}

请记住,如果按钮和模态 div 在内部UpdatePanel,请替换ClientScriptManager.RegisterClientScriptBlockScriptManager.RegisterClientScriptBlock.


最后,作为最后的信息说明...您的脚本 ( $("#Btndiag").click(...)) 将不起作用,因为ASP.NET 在呈现为 HTML 时会更改元素 ID

您必须按以下方式工作:

$("#<%= Btndiag.ClientID %>").click(function () { $("#myModal").modal(); });

请注意,您不需要对按钮的单击事件执行任何操作。您希望框架在回发后自动运行您的脚本。

于 2013-04-01T05:15:31.480 回答