zoukankan      html  css  js  c++  java
  • 使用Ajax在javascript中调用后台C#函数

    使用Ajax在javascript中调用后台C#函数


    最近一段时间在紧跟一个网站的项目,数据库中用户表的UserName要求是唯一的,所以当用户选定一个用户名进行注册时要首先检查该用户名是否已被占用,并给出提示。起初的实现是:用户填写完注册表单提交后,在后台进行验证。但看到很多网站的设计是当用户填写完用户名,TextBox失去焦点后就会立即给出提示,比如https://passport.csdn.net/account/register,反应很迅速,应该是在前台进行检查的。今天花了些时间针对这一点查了一些资料。
     
    js调用后台C#函数检测用户名时需要获取用户输入的用户名,然后检查数据库中是否已含有该用户名:
     
    传递参数的方法,有的(http://www.cnblogs.com/morningwang/archive/2008/04/07/1140340.html)采用如下方法:
     
    //后台
     
    protected string CsharpVoid(string strCC)
    {
       strCC = "你好!" + strCC;
       return strCC;
    }
     
    //前台
     
    function Init()
    {
       var v = "中国";
       var s = '<%=CsharpVoid("'+v+'") %>';
       alert(s);
    }
     
    我进行了尝试,结果并不如人所愿。后来绝决定使用Ajax来实现。由于之前了解的甚少,所以整个过程也走了不少弯路,幸运的是最后还是给弄出来了。具体实现步骤如下:
     
    1.bin目录下添加引用:AjaxPro.2.dll
     
     并在后台Codefile中并添加using AjaxPro;
     
    2.Web.config 中<system.webServer>里的<handlers>下添加,以下内容:
    <add name="AjaxPro" verb="POST,GET" path="ajaxpro/*.ashx" type="AjaxPro.AjaxHandlerFactory,AjaxPro.2"/>

    3.Site.master的aspx文件中的<asp:ScriptManager> 添加 ,EnablePageMethods="true"。
     
    4.使用方法:
     
    1)类前添加:[AjaxNamespace("ANSP")](修改命名空间名称,可略过)
     
    [AjaxNamespace("ANSP")]
     public partial class Physician_WUC_PhysicianInfor : System.Web.UI.UserControl
     {
     
    }
     
    2)Page_Load
     
    protected void Page_Load(object sender, EventArgs e)
     {
      lca_dataservice = new lca_database_service.lca_database_service();
      Utility.RegisterTypeForAjax(typeof(Physician_WUC_PhysicianInfor));
     }
     
    3)要调用的方法前添加:[AjaxPro.AjaxMethod]

     [AjaxPro.AjaxMethod]
     public bool CheckUsernameExist(string username)
     {
      bool NotExist = false;
     
      try
      {
        System.Data.DataSet ds = lca_dataservice.readDoctor(username);
        if (ds == null || ds.Tables[0].Rows.Count <= 0)
        {
          NotExist = true;
        }
      }
      catch (Exception ex)
      {
        NotExist = false;
      }
      return NotExist;
     }

     4)前台js调用方法:
     
    var Exist = ANSP.CheckUsernameExist(userName).value;

     Exist为函数返回值。
     
    if(Exist==true)
    {
     
      //用户名不存在
     
    }else
     
    {
     
      //用户名存在
     
    }
     
    经过以上设置,算是达到了预想的要求。

  • 相关阅读:
    5.19 省选模拟赛 T1 小B的棋盘 双指针 性质
    5.15 省选模拟赛 容斥 生成函数 dp
    5.15 省选模拟赛 T1 点分治 FFT
    5.15 牛客挑战赛40 B 小V的序列 关于随机均摊分析 二进制
    luogu P4929 【模板】舞蹈链 DLX
    CF 878E Numbers on the blackboard 并查集 离线 贪心
    5.10 省选模拟赛 拍卖 博弈 dp
    5.12 省选模拟赛 T2 贪心 dp 搜索 差分
    5.10 省选模拟赛 tree 树形dp 逆元
    luogu P6088 [JSOI2015]字符串树 可持久化trie 线段树合并 树链剖分 trie树
  • 原文地址:https://www.cnblogs.com/taofx/p/4139873.html
Copyright © 2011-2022 走看看