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

使用Ajax在javascript中调用后台C#函数的更多相关文章

  1. 利用ajax在javascript中获取后台的值

    <script type="text/javascript"> function login() { var sa = WebForm1.Hello().value; ...

  2. 使用ASP.NET AJAX 从脚本中调用Web 服务的应用方法

    技能点:通过编写WebService,在页面js中调用WebService来进行数据查询. 网站开发,有些时候需要使用js在页面动态生成一些内容,但还有些数据要通过查询数据库才能获取的. 但由于诸如主 ...

  3. JAVAFX 2.0 javascript中调用java代码

    现在你已经知道如何在JavaFX中调用JavaScript.在本章中,你将了解到相反的功能——在web页面中调用JavaFX. 大体上的理念是在JavaFX程序中创建一个接口对象,并通过调用JSObj ...

  4. COM动态添加删除成员,类似JavaScript中调用的对象

    在JavaScript中调用对象时,可动态添加删除成员如: var obj=new Object; obj.member1='aaaaa'; obj.fun1=function() { alert(' ...

  5. ASP.NET#JavaScript中调用WebServer注意的问题

    1)要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,就要取消注销以下行:[System.Web.Script.Services.ScriptService](2)调用格式:命名空间 ...

  6. [转]Javascript中的自执行函数表达式

    [转]Javascript中的自执行函数表达式 本文转载自:http://www.ghugo.com/javascript-auto-run-function/ 以下是正文: Posted on 20 ...

  7. 深入理解javascript中的立即执行函数(function(){…})()

    投稿:junjie 字体:[增加 减小] 类型:转载 时间:2014-06-12 我要评论 这篇文章主要介绍了深入理解javascript中的立即执行函数,立即执行函数也叫立即调用函数,通常它的写法是 ...

  8. 在javascript中关于变量与函数的提升

    在javascript中关于变量与函数的提升 一.简介 在javascript中声明变量与函数的执行步骤: 1.先预解析变量或函数声明代码,会把用var声明的变量或者函数声明的代码块进行提升操作 2. ...

  9. javascript中的立即执行函数(function(){…})()

    javascript中的立即执行函数(function(){…})() 深入理解javascript中的立即执行函数,立即执行函数也叫立即调用函数,通常它的写法是用(function(){…})()包 ...

随机推荐

  1. 305. Number of Islands II

    题目: A 2d grid map of m rows and n columns is initially filled with water. We may perform an addLand  ...

  2. ACMer(转)

    我所了解的ACMer主要分为以下几类: A类:天才型(这个在咱们学校基本不存在),所以就不用考虑了-_- ! B类:刷题很快,题数是最多的几个之一,但有一个习惯就是喜欢看题解,思考问题一想不出来了就想 ...

  3. Matlab多个Figure图合成一个Fig

    案例:之前跑过的程序 已经生成了多个matlab图,现在需要进行合并到一个图中. 解决方案,利用图像句柄把figure图像中的参数读入到内存中,然后重新subplot绘制. 程序如下: clc;cle ...

  4. angularjs transclude demo

    <!doctype html> <html lang="en" ng-app="expanderModule"> <head> ...

  5. spring mvc 国际化

    spring mvc 国际化 使用CookieLocaleResolver实现国际化的步骤:1.注册 messageSource,localeResolver 两个bean2.调用localeReso ...

  6. 18.allegro区域约束规则设置

    一.线宽和线间距 --- ---------------- 然后再电路板上创建一个区域 ----- ---- --- ---- ------------------------------

  7. base64加密和解密

    http://snailwarrior.blog.51cto.com/680306/142472/ 2.从标准输入读取文件内容,base64编码并打印到标准输出 [root@localhost tes ...

  8. LCS记录路径

    还想用hash记录……果然是天真.lcs转移比较简单,每次增加1.每次找是当前-1的就行了. #include <algorithm> #include <iostream> ...

  9. IBatis.Net 批量插入数据

    利用了iterate标签来做的: 先看iterate标签几个属性的: prepend-加在open指定的符号之前的符号,添加在语句的前面(可选) property-类型为ArrayList的用于遍历的 ...

  10. 读写INI辅助类

    using System.Text; using System.Runtime.InteropServices; using System; namespace Benson.INI读写 { #reg ...