一、问题

在网站一般都有很多地方需要用户去填写一些信息,然后用户点击提交,将信息送往后台储存到数据库中。在这一个过程我以前做法直接在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. vue学前班004(基础指令与使用技巧)

    我学vue 的最终目的是为了 做apicloud 和vue 的开发  作为配合apicloud的前端框架使用 所以项目用不到的会暂时不介绍. (强烈建议  官网案例走一遍) 基础指令的学习(结合aui ...

  2. [Swift实际操作]七、常见概念-(9)使用定时组件Timer执行定时任务

    本文将为你演示计时器的使用,使用计时器可以每隔一定时间执行某个函数. 在左侧的项目导航区,打开视图控制器的代码文件:ViewController.swift现在开始编写代码,实现任务定时的功能.定义一 ...

  3. 使用命令行创建一个vue项目的全部命令及结果

    dell@DESKTOP-KD0EJ4H MINGW64 /f/05 项目 $ npm install --global vue-cli npm WARN deprecated coffee-scri ...

  4. 将url动态转换成二维码插件 - 兼容IE8

    插件地址  http://static.runoob.com/assets/qrcode/qrcode.min.js ,网页直接打开,然后ctrl+s保存到本地. <!DOCTYPE html& ...

  5. 【4】JMicro微服务-服务限流

    如非授权,禁止用于商业用途,转载请注明出处作者:mynewworldyyl 通过配置SMethod的maxSpeed属性实现服务限流,单位是个/每秒(qps),也就是服务方法每秒允许接收的最大请求个数 ...

  6. 如何正确的加载和执行 JavaScript 代码

    无论当前 JavaScript 代码是内嵌还是在外链文件中,页面的下载和渲染都必须停下来等待脚本执行完成.JavaScript 执行过程耗时越久,浏览器等待响应用户输入的时间就越长.浏览器在下载和执行 ...

  7. WebDriverAPI(4)

    单击某个元素 采用元素id.click()方法即可 双击某个元素id.doubleClick 操作单选下拉列表 测试网页HTML代码 <html> <body> <sel ...

  8. Java之集合(二十)LinkedBlockingQueue

    转载请注明源出处:http://www.cnblogs.com/lighten/p/7503678.html 1.前言 本章介绍阻塞队列LinkedBlockingQueue,这是一个基于链表的可选长 ...

  9. Vue的watch监听事件

    Vue的watch监听事件 相关Html: <!DOCTYPE html> <html lang="en"> <head> <meta c ...

  10. OpenGL12-shader(GLSL)着色语言3-(属性参数)(代码已上传)

    上一个例程中,使用了uniform 类型的变量,uniform可以理解为全局变量,这一节中使用 的是attribute类型的变量,翻译过来就是属性,他是与顶点绑定的,就意味着一个顶点可以 有很多个属性 ...