从c#代码调用Confirm弹出窗口

时间:2014-04-28 16:33:21

标签: c# javascript ajax

我试图在j#或Ajax ConfirmButtonExtender中使用c#中的确认消息框,基于从SQL传递给变量的错误号。例如,如果我的SQL为int ErrorNumber = 1返回1,那么我想询问用户是否希望在SQL中插入一些文本。如果是,那么我将传递要输入的文本。

抱歉,我没有代码示例,但我尝试的所有内容都无法按预期工作。

欢迎任何建议。

更新 我有一个解决方法,虽然不是我想要实现的目标。

<script type = "text/javascript">
        function Confirm_System() {
        var confirm_value = document.createElement("INPUT");
        confirm_value.type = "hidden";
        confirm_value.name = "confirm_value";
        if (confirm("Do you want to add the System?")) {
            confirm_value.value = "Yes";
        } else {
            confirm_value.value = "No";
        }
        document.forms[0].appendChild(confirm_value);
    }
</script>

当按下我的网页上的按钮时,我会从弹出的确认框

返回结果
protected void c_AddText_Click(object sender, EventArgs e)
{
    string confirmValue = Request.Form["confirm_value"];
    if (confirmValue == "Yes")
    {
        //do something
    }
}

我已添加OnClientClick指向我的Javascript函数

OnClientClick = "Confirm_System()"

如果有人知道怎么做而不需要在网页上有一个按钮,那么当我的SQL存储过程中出现错误编号时会触发,那么我将不胜感激。

1 个答案:

答案 0 :(得分:0)

C#无法直接执行Javascript代码。一个是托管应用程序,另一个是相对动态的脚本,在单个网页的上下文中运行(简单地说 - 为了示例)。

但是,由于C#应用程序负责将HTML输出到浏览器,因此它也可以自由添加内容。

如果您使用<asp:Literal ID="myLiteral" runat="server" />元素,则可以更改其内容以满足您的需求。

在这种情况下,您需要插入一些在加载页面时执行的javascript。

示例(这是您的C#方法):

myLiteral.Text = "<script> alert('I am a popup!'); </script>"

这将确保您的浏览器在其HTML内容中获得额外的内容。在这种情况下,浏览器会显示一个消息框,其中包含消息I'm a popup!

我假设您只想在页面加载后运行此代码。如果您使用的是jQuery,则以下情况更好:

myLiteral.Text = "<script> $(document).ready(function() { alert('I am a popup!'); }); </script>"

这将确保在显示警报之前已加载整个页面。

我不确定您希望页面完全按照您的要求进行操作,但如果您实现此功能,则可以将{j}代码添加到myLiteral

<强> TL; DR
不,你不能直接使用C#调用javascript。但是,您可以使用C#构造有效的HTML内容,然后由浏览器选择并执行。将HTML页面视为Web应用程序和客户端浏览器之间的单向通信。

<强>声明
这个问题有更好,更可重复,更快速和更简单的解决方案。但是,由于我没有关于您当前代码的信息,所以这是我能提出的最简单,最简短的解决方案。

<强>备注
您还可以将<script>代码(和$(document).ready()调用)放在Literal 之外。但是,这意味着您只能能够输入javascript代码,而不是简单的HTML输出。随便使用它。