【问题标题】:Calling C# function through Javascript (without Json)通过 Javascript 调用 C# 函数(无 Json)
【发布时间】:2013-06-28 10:37:22
【问题描述】:

我在 JavaScript(Mypage.aspx) 中有一个名为“callfunction()”的函数。这个函数应该在 C# (Mypage.aspx.cs) 中调用另一个函数“func()”

类似这样的:

(在 Mypage.aspx 中)

 function callfunction()

 {

  // i have to call func() function here .....

 }

 </script>

(在 Mypage.aspx.cs 文件中)

 public void func()

 {

 // My code goes here

 }

因此,我进行了很多研究,到目前为止,我得出了 2 个结论: 第一个是使用Json,但我的上级明确表示他们不希望我这样做。 第二是因为客户端、服务器 aspnet 协议,我不能按我的意愿做事

请给我一些关于如何做到这一点的提示,我越来越绝望了

【问题讨论】:

  • 你应该在上面使用Ajax。它很容易实现..
  • 不需要json你可以使用_postback()调用aspx的任何隐藏按钮的事件处理程序
  • Hum 也许从现在开始使用回发将是一个解决方案,但我不知道我是否需要更具体的方法来做到这一点

标签: c# javascript jquery asp.net json


【解决方案1】:

好的....尝试使用page methods

首先在你的 aspx 页面上添加一个脚本管理器

  <asp:ScriptManager ID="scpt" runat="server" EnablePageMethods="true">
</asp:ScriptManager>

然后转到您的 aspx.cs 页面并声明一个类似的函数

[System.Web.Services.WebMethod]
    public static string ValidateUser(string emailId, string password)
    {
        //Your logic code
        return returnString;
    }

然后从你的javascript调用c#方法

 PageMethods.ValidateUser(email, password, CallSuccess_Login, CallFailed_Login);

并且还在你的javascript中创建2个回调函数CallSuccess_LoginCallFailed_Login

希望对你有帮助

【讨论】:

  • 在我看来,这似乎是“使用 json”的答案。我相信他们不希望他使用网络服务。
  • 不一定是json,也可以是字符串的返回类型。 :)
  • 我不确定,但不认为返回类型必须是 JSON
  • 生病与我的上级交谈,询问我是否可以使用页面方法,无论如何感谢您的帮助
【解决方案2】:

以下是您可以使用的选项

  1. 如果您使用 asp.net,则使用 Ajax 工具来创建此文件

  2. 如果您不想使用 Ajax 工具包,请使用 JavaScript __doPostBack

  3. 或其他选项在 Web 服务中编写服务器端函数并使用 JavaScript 调用 Web 方法

【讨论】:

    【解决方案3】:

    如果是 webforms 项目(不是 MVC)并且不想使用 AJAX,可以使用__doPostBack

    <script type="text/javascript">
     function callfunction(parameter)
     {
         __doPostBack('func', parameter)
     }
    </script>
    

    C#:

    public void Page_Load(object sender, EventArgs e)
    {
      string parameter = Request["__EVENTARGUMENT"]; // parameter
      var senderObject = Request["__EVENTTARGET"]; // func
      if(senderObject == "func")
      {
         //call your function here, or write the implementation
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-14
      相关资源
      最近更新 更多