【问题标题】:How I would call a C# function from javascript?如何从 javascript 调用 C# 函数?
【发布时间】:2013-02-01 16:33:20
【问题描述】:

我试图弄清楚如何从 javascript 确认框中调用 C# 函数。即,如果用户选择“确定”,则调用一个函数,如果用户选择“取消”,则调用另一个函数。 所有代码都在后台,如下所示:

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");

但是当我尝试这样做时,页面并没有等待用户在重定向之前单击“确定”,因此变得毫无意义。

【问题讨论】:

  • 向服务器发送 JSON 请求以调用该函数。您的代码有几处问题。首先,您将 javascript 编写为一个字符串,这将变得越来越难以维护。其次,重定向和清除表单都可以在客户端通过javascript执行。
  • 使用 ajax 和 web 服务
  • 为了重定向和表单清晰,你不需要调用后面的代码,用简单的javascript来做。
  • 我还应该注意到,当用户单击页面上的按钮时,会生成一个 SqlConnection 并将详细信息插入到一个表中,然后在connection.Close(); 之后出现上面的代码。我不确定如何从 C# 调用 JavaScript。
  • 更多解释你可以查看this

标签: c# javascript asp.net


【解决方案1】:

您对服务器端代码和客户端代码感到困惑。您提交的 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 错误,因为它会尝试写出 &lt;%=redirect()%&gt;;&lt;%=clearForm()%&gt;; 这是应该在服务器端运行的 ASPX scriptlet 代码(但实际上显示为客户端 JavaScript 中的字符串)。

这只是对为什么不能直接从 JavaScript 调用 C# 函数的解释/答案。

针对您的具体问题,您无需回调服务器进行重定向或清除表单。

这两者都可以在 JavaScript 中完成。

可以使用 JavaScript window.location="myPage.aspx"self.location="myPage.aspx" 完成重定向

清晰的表格可以用JavaScript form.reset()

【讨论】:

    【解决方案2】:

    是的,它很简单:把你的回调函数放在一个文件中

    之后你应该绑定点击OK你调用函数: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 ...
           });
    });
    

    就这么简单

    【讨论】:

      【解决方案3】:

      在 buttonclick 上传递一个 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>
      

      对其他按钮也进行类似操作。

      【讨论】:

        猜你喜欢
        • 2013-08-28
        • 1970-01-01
        • 1970-01-01
        • 2017-03-20
        • 1970-01-01
        • 2023-03-28
        • 2012-12-07
        • 1970-01-01
        相关资源
        最近更新 更多