温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

看JavaScript中怎么调用C#函数

发布时间:2021-07-07 17:24:39 来源:亿速云 阅读:171 作者:Leah 栏目:编程语言

本篇文章为大家展示了看JavaScript中怎么调用C#函数,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

关键代码如下:

Default.aspx.cs    public partial class _Default : System.Web.UI.Page   {      protected void Page_Load(object sender, EventArgs e)      {          //设置 TextBox 的 OnBlur 事件被触发时,所要调用的 JavaScript 函数          this.TextBox1.Attributes["onblur"] = "getEmployeeInfo('TextBox1', 'TextBox2', 'TextBox3');";          this.TextBox4.Attributes["onblur"] = "getProductInfo('TextBox4', 'TextBox5', 'TextBox6');";           //设置在 JavaScript 文件中,所能调用的 C# 自定义类的名称           Ajax.Utility.RegisterTypeForAjax(typeof(MyClass01));      }  }

我们看到上方,透过 RegisterTypeForAjax 函数,可向 AJAX.NET 注册我们写的 C# 自定义类 MyClass01。接着 AJAX.NET 会浏览这个自定义类,里面标示有 AjaxMethodAttribute 的函数,如下方代码中的 getEmployeeInfo 和 getProductInfo 函数,我们并在这两个函数里,实际去访问数据库并取回需要的一或多个字段的值。

App_Code/MyClass01.cs  public class MyClass01  {      public static string strConnString = WebConfigurationManager.ConnectionStrings["ConnString_SqlClient"].ConnectionString;       //由 EmployeeID (如: 1, 2 ,3 , ...),去数据库取出他的 LastName、Title      [Ajax.AjaxMethod()]       //告知 Ajax 封装类,为此方法创建一个 JavaScript 代理,这样才能被客户端调用      public string getEmployeeInfo(string strEmployeeID)      {          string strResult = string.Empty;          string strSql = "SELECT LastName, Title FROM EMPLOYEES WHERE EmployeeID = @EmployeeID";           using (SqlConnection conn = new SqlConnection(strConnString))          {              conn.Open();              if (conn.State == ConnectionState.Open)              {                  using (SqlCommand cmd = new SqlCommand(strSql, conn))                  {                      cmd.Parameters.Add("@EmployeeID", SqlDbType.Int).Value = strEmployeeID.Trim();                       //若确定要捉的记录只有一笔,可加上此 ADO.NET 的「SingleRow」参数,以优化性能、节省系统资源                      using (SqlDataReader dr = cmd.ExecuteReader(CommandBehavior.SingleRow))                      {                          if (dr.Read())                          {                              strResult = dr[0].ToString() + "§" + dr[1].ToString();                          }                      }                  }              }          }           return strResult;     //strResult = "result1§result2";   //返回值为用 "§" 字符所分割的一或多个字符串      }        //由 ProductID (如: 1, 2 ,3 , ...),去数据库取出他的 ProductName、QuantityPerUnit      [Ajax.AjaxMethod()]       //告知 Ajax 封装类,为此方法创建一个 JavaScript 代理,这样才能被客户端调用      public string getProductInfo(string strProductID)      {          //...中間略...      }   } //end of class

如下,onBlur 事件被触发时,会在 JavaScript 里调用 C# 的同名函数,并从数据库里取得返回值。

js/MyJs01.js  //由 EmployeeID (如: 1, 2 ,3 , ...),去数据库取出他的 LastName、Title  function getEmployeeInfo(TextBox1, TextBox2, TextBox3) {       //调用 App_Code 文件夹里,C# 自定义类的 getEmployeeInfo 函数      var response = MyClass01.getEmployeeInfo(document.getElementById(TextBox1).value);       //response 为从 C# 自定义类里的函数所传回来的,由一或多个 "§" 字符所组成的一个字符串      if ((response.value == null) || (response.value.length == 0)) {  //若用户输入「不合理的字符」或「无对应数据的ID号码」          alert('数据库里查无数据 !');          document.getElementById(TextBox2).value = "";          document.getElementById(TextBox3).value = "";      }      else if (response.value.length > 0) {      //若数据库里有查找到对应的数据          var strArrResult = response.value.split("§");          if (strArrResult[0].length > 0)              document.getElementById(TextBox2).value = strArrResult[0];          if (strArrResult[1].length > 0)              document.getElementById(TextBox3).value = strArrResult[1];      }  }

如下,在 web.config 里添加配置,让所有 ajax/*.ashx 的请求,改由 Ajax.PageHandlerFactory 产生的 HTTP Handler 处理,而不再由默认的 System.Web.UI.PageHandlerFactory 处理程序工厂 [9] 来处理。

web.config  < system.web>     < httpHandlers>         < add verb="POST,GET" path="ajax/*.ashx"            type="Ajax.PageHandlerFactory, Ajax" />     < /httpHandlers> < /system.web>

上述内容就是看JavaScript中怎么调用C#函数,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI