我试图在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存储过程中出现错误编号时会触发,那么我将不胜感激。
答案 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输出。随便使用它。