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
     
    {
     
      //用户名存在
     
    }
     
    经过以上设置,算是达到了预想的要求。

  • 相关阅读:
    C#通过属性名字符串获取、设置对象属性值
    程序员的入门 简单的编程HelloWord
    第二章
    Winform笔记
    Semantic框架的使用
    Java多线程中锁的理解与使用
    vue实用组件——页面公共头部
    SpringBoot 整合ElasticSearch,实现站内搜索,高亮关键字
    maven出现如下报错Dmaven.multiModuleProjectDirectory system property is not set
    vue中引入bootsrtap,jquery,elementUI
  • 原文地址:https://www.cnblogs.com/taofx/p/4139873.html
Copyright © 2011-2022 走看看