我如何从javascript调用C#函数?

时间:2013-01-31 20:41:41

标签: c# javascript asp.net

我正在试图弄清楚如何通过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,因此没有意义。

3 个答案:

答案 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>

同样适用于其他按钮。