使用 JavsScript 从客户端调用服务器端的非静态方法 [英] Call non-static method in server-side from client-side using JavsScript
本文介绍了使用 JavsScript 从客户端调用服务器端的非静态方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
如何使用javascript(aspx)从客户端调用服务器端(aspx.cs)中的非静态方法......?
据我所知,我可以从客户端调用服务器端的静态方法...
服务器端:
[WebMethod]公共静态无效方法1(){}
客户端:
<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true"></asp:ScriptManager>
它有效.现在如何从客户端调用非静态方法?
解决方案
您可以通过使用简单的 .asmx 页面而不是代码隐藏页面来避免静态约束.
1) 使用 AJAX Enable ASP.NET 模板打开新网站(它将必要的引用放在 web.config 中)
2) SIMPLESERVICE.ASMX - 添加一个新的 .asmx 网络服务(我称之为 SimpleService.asmx)注意 [System.Web.Script.Services.ScriptServive] 修饰和 SimpleService 类实现 Webservice.
<%@ WebService Language="C#" Class="SimpleService" %>使用系统;使用 System.Web.Services;[System.Web.Script.Services.ScriptService]公共类 SimpleService : WebService{[网络方法]公共字符串 GetMessage(字符串名称){return "你好 <strong>"+ name + "</strong>,这里的时间是:" + DateTime.Now.ToShortTimeString();}}
3) DEFAULT.ASPX - 要使用它引用脚本管理器中的服务,您就可以关闭并运行了.在我的 Javascript 中,我调用 class.method - SimpleService.GetMessage.
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head runat="服务器"><title>无标题页</title><script language="javascript" type="text/javascript">函数调用服务器(){SimpleService.GetMessage($get("Name").value, displayMessageCallback);}功能 displayMessageCallback(结果){$get("message").innerHTML = 结果;}头部><身体><form id="form1" runat="server"><asp:ScriptManager ID="ScriptManager1" runat="server" ><服务><asp:ServiceReference Path="~/SimpleService.asmx"/></服务></asp:ScriptManager><div>
<h1>Hello World 示例</h1><div>输入名称:<input id="Name" type="text"/><a href="javascript:callServer()">呼叫服务器</a><div id="消息"></div>
</表单>