我正在试图弄清楚如何通过javascript确认框调用C#函数。即如果用户选择“OK”,则调用一个函数,如果用户选择“取消”,则调用另一个函数。 所有代码都位于后页,如下所示:
Response.Write(@"
<script language='javascript'>
var msg=confirm('Your new document has been created.\nPress OK to go there now, or Cancle to create another document.');
if (msg==true) {<%=redirect()%>;}
else {<%=clearForm()%>;}
</script>
");
protected void redirect(object sender, EventArgs e)
{
Response.Redirect("myPage.aspx");
}
protected void clearForm(object sender, EventArgs e)
{
//More code here//
}
请注意,Response.Redirect中的所有代码都在一行上,为了简单起见,我将其拆分为此处!
无论如何,这不起作用,我找不到解决方案。我在if
语句中尝试了各种不同的东西
我的第一个想法是不给用户一个选项,只需使用:
Response.Write(@"<script language='javascript'>alert('Your new document has been created.');</script>");
Response.Redirect("TaskPanel.aspx");
但是当我尝试这个时,页面没有等待用户在重定向之前单击OK,因此没有意义。
答案 0 :(得分:3)
您在服务器端和客户端代码之间感到困惑。您提出的C#代码将在您的服务器上运行并在页面上写出JavaScript代码:
<script language='javascript'>
var msg=confirm('Your new document has been created.\nPress OK to go there now, or Cancle to create another document.');
if (msg==true) {<%=redirect()%>;}
else {<%=clearForm()%>;}
</script>
您写出的JavaScript将在客户端浏览器上运行。
但是,我想你会得到一个JavaScript错误,因为它会尝试写出<%=redirect()%>;
和<%=clearForm()%>;
这是应该在服务器端运行的ASPX scriptlet代码(但是实际上是在客户端的JavaScript中显示为String)。
这只是为什么你不能直接从JavaScript调用C#函数的解释/答案。
针对您的具体问题,您无需回拨服务器即可进行重定向或清除表单。
这两个都可以在JavaScript中完成。
可以使用JavaScript window.location="myPage.aspx"
或self.location="myPage.aspx"
可以使用JavaScript form.reset()
答案 1 :(得分:1)
是的,它只是简单:将回调函数放在文件中
之后你应该绑定点击确定你用以下方法调用该函数: AJAX 用任何javascript框架来制作简单的
行 取消
$("#OK,#Cancel").click(function(){
var whichFct = $(this).attr('fct'); var urlToFile = "web/app/link/fct/1";
if(whichFct == 2) urlToFile = "web/app/link/fct/2"
$.post(urlToFile,function() {
//do sthlike hiding the form ...
});
});
它比这简单
答案 2 :(得分:0)
按钮点击后传递一个javascript函数..然后在.aspx页面中编写以下代码:
<script language='javascript'>
function func_name()
{
var msg=confirm('Your new document has been created.\nPress OK to go there now, or Cancle to create another document.')
if (msg==true) {<%=redirect()%>}
else {<%=clearForm()%>}
}
</script>
同样适用于其他按钮。