一、问题

在网站一般都有很多地方需要用户去填写一些信息,然后用户点击提交,将信息送往后台储存到数据库中。在这一个过程我以前做法直接在button的click事件中来判断用户输入的数据是否完整和合法,虽然这样可以实现验证用户输入的信息,但是每次用户点击提交按钮时候页面都会刷新一次,这样对用户会造成比较差的体验。如果我们把用户验证消息这一步放到客户端,当用户输入正确的信息时候才提交到服务器去处理,否则不提交到服务器,也就是不刷新页面。

这样实现的好处我认为有以下两点:1、有更好的用户体验。2、编写服务器端代码时候不会有一大推的逻辑验证的代码,让代码看起来更舒服、整洁(个人很讨厌这样很多验证信息的逻辑代码)

二、解决方案

1、asp.net的button控件有两个事件

a、onclick:在服务器端执行的代码(c#代码)。

b、OnClientClick:在客户端执行的代码(javascript代码)

这两个事件执行的先后的关系是,先执行OnClientClick事件,如果OnClientClick执行之后返回为true,再执行onclick代码,否则不执行onclick的代码,通过对这两个事件的分析我们就可以很容易的使用客户端的javascript的脚本对用户输入的信息进行验证了,如果验证通过了返回true,执行服务端的代码,否则不返回到服务器端。通过这两个事件就可以实现我们想要的效果了。

2、接下来我们开始写代码吧。aspx的客户端代码如下。

html:

<body>
<form id="form1" runat="server">
<div>
<asp:Button ID="Button1" runat="server" Text="Button"
OnClientClick ="return clientClick()" onclick="Button1_Click" />
<input id="txtName" type="text" />
</div>
</form>
</body>

    javascript:

function clientClick() {

            var el = document.getElementById("txtName");
if (el.value == "") {
alert("请输入用户名");
return false;
}
return true;
}
</script>

         在写客户端代码有一个需要注意的地方,一般情况我们写html上的某个元素的事件执行函数一般是这样写的如:onclick=“clickMethod”,根本不会再前面加上一个return,但是这个OnClientClick却不一样,如果你不加上return的话,即使你在javascript中的代码的返回值为false,当你点击提交了之后计算是它还是会执行服务器端的代码。所以在验证客户端信息的时候一定要在javascript的方法前面加上return。

3.服务器的代码如下:

 protected void Button1_Click(object sender, EventArgs e)
{
Response.Write("用户已经输入的用户名");
}

只需要通过简单的三步就能实现在客户端验证用户输入的信息,只有当正确时候才会返回让服务器去处理。

如果有些的不好的,或者是有什么不足的地方,希望各位能够能够指出来。谢谢。

三、引用

参考:http://blog.163.com/xiao_mege/blog/static/72942753201072053841131/

asp.ne如何使用javascript去验证客户端信息,如果验证成功则送往服务器端处理,否则在客户端提示用户(不返回到服务器端处理)的更多相关文章

  1. ASP.NET MVC的客户端验证:jQuery的验证

    之前我们一直讨论的Model验证仅限于服务端验证,即在Web服务器根据相应的规则对请求数据实施验证.如果我们能够在客户端(浏览器)对用户输入的数据先进行验证,这样会减少针对服务器请求的频率,从而缓解W ...

  2. asp.net 登陆验证 Form表单验证的3种方式 FormsAuthentication.SetAuthCookie;FormsAuthentication.RedirectFromLoginPage;FormsAuthenticationTicket

    我们在登陆成功后,使用下面的3种方法,都是同一个目的:创建身份验证票并将其附加到 Cookie, 当我们用Forms认证方式的时候,可以使用HttpContext.Current.User.Ident ...

  3. ASP.NET Core 使用 JWT 搭建分布式无状态身份验证系统

    为什么使用 Jwt 最近,移动开发的劲头越来越足,学校搞的各种比赛都需要用手机 APP 来撑场面,所以,作为写后端的,很有必要改进一下以往的基于 Session 的身份认证方式了,理由如下: 移动端经 ...

  4. ASP.NET MVC5(四):数据注解和验证

    前言 用户输入验证的工作,不仅要在客户端浏览器中执行,还要在服务端执行.主要原因是客户端验证会对输入数据给出即时反馈,提高用户体验:服务器端验证,主要是因为不能完全信任用户提供的数据.ASP.NET ...

  5. asp.net core系列 45 Web应用 模型绑定和验证

    一. 模型绑定 ASP.NET Core MVC 中的模型绑定,是将 HTTP 请求中的数据映射到action方法参数. 这些参数可能是简单类型的参数,如字符串.整数或浮点数,也可能是复杂类型的参数. ...

  6. ASP.NET MVC 音乐商店 - 6. 使用 DataAnnotations 进行模型验证

    在前面的创建专辑与编辑专辑的表单中存在一个问题:我们没有进行任何验证.字段的内容可以不输入,或者在价格的字段中输入一些字符,在执行程序的时候,这些错误会导致数据库保存过程中出现错误,我们将会看到来自数 ...

  7. ASP.NET Web Api 服务器端变了,客户端该如何修改请求(转载)

    转载地址:http://www.cnblogs.com/fzrain/p/3558765.html 前言 一旦我们将API发布之后,消费者就会开始使用并和其他的一些数据混在一起.然而,当新的需求出现时 ...

  8. ASP.NET开发中主要的字符验证方法-JS验证、正则表达式、验证控件、后台验证

    ASP.NET开发中主要的字符验证方法-JS验证.正则表达式.验证控件.后台验证 2012年03月19日 星期一 下午 8:53 在ASP.NET开发中主要的验证方法收藏 <1>使用JS验 ...

  9. ASP.NET开发在JavaScript有中文汉字时出现乱码时简单有效的解决

    一般情况在使用ASP.NET开发使用JavaScript有中文汉字时不会出现乱码情况,比如:alert('您看到我了吗?');这样直接输入中文汉字的代码中是不会出现乱码的,如果出现了,一是检查Web. ...

随机推荐

  1. $_ENV和$GLOBALS预定义变量

    1,$_ENV该全局数组可以获取环境变量,在php5.3中默认禁用,但是可以在php.ini中启用. variables_order="EGPCS" 2,$GLOBALS一个包含了 ...

  2. powerDesiner设计数据库的一些用法

    数据库的设计主要有以下几个步骤: 1:需求分析:根据业务需求分析出满足客户的需求,从而建立相应的数据库 2:概念设计:通过数据抽象,设计系统概念模型,一般为E-R模型:(entity-relation ...

  3. vue-cli新建vue项目安装axios后在IE下报错

    使用脚手架新建了一个vue项目,可以在IE9+浏览器运行,但是在添加了axios后,在IE下就报错了 首先是安装axios,在命令行执行: $ npm install axios -s //执行命令, ...

  4. 【bzoj5210】最大连通子块和 动态dp

    动态$dp$好题 考虑用树链剖分将整棵树剖成若干条链. 设x的重儿子为$son[x]$,设$x$所在链链头为$top[x]$ 对于重链上的每个节点(不妨设该节点编号为$x$)令$f[x]$表示以$x$ ...

  5. 在 Ubuntu下安装 labelImg (标数据用)

    安装 SIP 下载 SIP 并解压 : $ sudo python configure.py $ make $ sudo make install 安装 依赖库 $  sudo apt-get ins ...

  6. Sharepoint Timer job问题汇总

    解决方案发布最好发布到GAC中,使用WebApplication很多时候会有问题.TimerJob并非是在IIS下运行,所以发布到wss目录下的dll不能使用. 如果解决方案中只有一个Timer Jo ...

  7. json对象按时间排序

    //正序var data = {"rows": [{"name": "张三","time": "2011/4/ ...

  8. MicrosoftOfficeProfessionalPlus2013激活方法

    MicrosoftOfficeProfessionalPlus2013已经使用很久(估计快一年了吧),但一直是未激活状态,每次打开都要弹出那个未激活的提示信息,很烦,但不知道自己怎么能够忍受这么久的, ...

  9. Eclipse编辑JS响应慢,复制粘贴卡顿的解决方案

    我使用的是官网标准版的eclipse4.3 for javaEE, 写JS时卡的简直无法忍受,尝试去掉所有的validate,包括菜单和项目属性中的都没作用. 整个人都急疯了~ 后来在项目根目录.pr ...

  10. python实现float/double的0x转化

    1. 问题引出 最近遇到了一个小问题,即: 读取文本文件的内容,然后将文件中出现的数字(包括double, int, float等)转化为16进制0x存储 原本以为非常简单的内容,然后就着手去写了py ...