Confirm在ASP.NET 服务器端的应用
2009-01-01 20:37
176 查看
这个标题很奇怪,不过不要在乎它.一般做过WEB程序的人都知道,Confirm是用于客户端的信息确认,主要是以写脚本的方式使用.不过最近终于在项目中遇到一例(不知道是不是搞设计的要把WEB程序当做CS程序一样用
),要求用户输入信息后在保存的时候要当数据库里做重复验证,如果重复的话就弹出信息框做覆盖确认,点击YES就覆盖掉数据库里的数据,点击NO就终止保存.
这就需要在服务器端动态向客户端注册脚本(总感觉有点AJAX的意思,但是客户显然对AJAX不感冒),并且在用户对脚本做出响应后再回到服务器来接着处理.以下是我想到的办法.
在.NET的PAGE对象中有一个属性ClientScript可以用来获取ClientScriptManager对象,其RegisterClientScriptBlock方法可以动态的向客户端注册脚本,该方法有两组重载,其中一个是由两个参数构成,第一个是Key:标识脚本的唯一键,第二是Script:表示要注册的脚本.
RegisterClientScriptBlock(Key,Script);
当然这个方法只是将脚本送到客户去执行,但是要想让脚本再次调用服务器端就麻烦一点了.
在ASP客户端的控件里一个叫LinkButton的控件,它在执行LinkButton_Click(单击)方法时候使用客户端回调的方式来处理的.至于为什么,只要将该控件放到页面上,并在其单击事件中写好代码,运行这个页面,使用右键查看网页的原代码就会明白.在实际的情况下你可以将LinkButton的TEXT属性置空,这样即使运行的时候页面也会发现这个控件的.
以下是具体的代码:
if (!this.IsClientScriptBlockRegistered("clientScript"))
{
// Form the script that is to be registered at client side.
String scriptString = "<script lanage='javascript'>if (confirm('Confirm me?')) __doPostBack('LinkButton1','')</script>";
this.RegisterClientScriptBlock("clientScript", scriptString);
}
至于使用LinkButton也只是没有办法,因为也是没有时间再去尝试使用其他方法,相信一定会有其他好的方法.
因为安全的原因有的框架不可能不支持这种回调方式,可以页面加上下列代码.
<%@ Page Language="C#" EnableEventValidation="false" %>
功能勉强实现了,不过不知道这样用会有什么隐患.又或者有更好的实现方式,请路过的朋友指点一下,感谢.
),要求用户输入信息后在保存的时候要当数据库里做重复验证,如果重复的话就弹出信息框做覆盖确认,点击YES就覆盖掉数据库里的数据,点击NO就终止保存.
这就需要在服务器端动态向客户端注册脚本(总感觉有点AJAX的意思,但是客户显然对AJAX不感冒),并且在用户对脚本做出响应后再回到服务器来接着处理.以下是我想到的办法.
在.NET的PAGE对象中有一个属性ClientScript可以用来获取ClientScriptManager对象,其RegisterClientScriptBlock方法可以动态的向客户端注册脚本,该方法有两组重载,其中一个是由两个参数构成,第一个是Key:标识脚本的唯一键,第二是Script:表示要注册的脚本.
RegisterClientScriptBlock(Key,Script);
当然这个方法只是将脚本送到客户去执行,但是要想让脚本再次调用服务器端就麻烦一点了.
在ASP客户端的控件里一个叫LinkButton的控件,它在执行LinkButton_Click(单击)方法时候使用客户端回调的方式来处理的.至于为什么,只要将该控件放到页面上,并在其单击事件中写好代码,运行这个页面,使用右键查看网页的原代码就会明白.在实际的情况下你可以将LinkButton的TEXT属性置空,这样即使运行的时候页面也会发现这个控件的.
以下是具体的代码:
if (!this.IsClientScriptBlockRegistered("clientScript"))
{
// Form the script that is to be registered at client side.
String scriptString = "<script lanage='javascript'>if (confirm('Confirm me?')) __doPostBack('LinkButton1','')</script>";
this.RegisterClientScriptBlock("clientScript", scriptString);
}
至于使用LinkButton也只是没有办法,因为也是没有时间再去尝试使用其他方法,相信一定会有其他好的方法.
因为安全的原因有的框架不可能不支持这种回调方式,可以页面加上下列代码.
<%@ Page Language="C#" EnableEventValidation="false" %>
功能勉强实现了,不过不知道这样用会有什么隐患.又或者有更好的实现方式,请路过的朋友指点一下,感谢.
相关文章推荐
- 自已写一个confirm功能应用在asp.net网页上
- ASP.NET中应用Excel:(6)在服务器端生成HTML表格
- ASP.NET中应用Excel:(6)在服务器端生成HTML表格
- 学习笔记:存储过程在asp.net中的应用
- 现存问题以及解决方案:在ASP.NET AJAX客户端得到服务器端的DataTable
- 《ASP.NET Ajax程序设计-第I卷:服务器端ASP.NET 2.0 AJAX Extensions与ASP.NET AJAX Control Toolkit》2007年4月16日 china-pub全国首发!+ 赠书名单已经确定
- ASP.NET AjaxPro的应用 .AjaxPro使用中“XXX未定义”的一种解决方法(转载的)
- 《ASP.NET AJAX程序设计 第I卷 服务器端ASP.NET AJAX Extensions与ASP.NET AJAX Control Toolkit》连载&最新更新
- 使用ASP.NET AJAX异步调用Web Service和页面中的类方法:服务器端和客户端数据类型的自动转换:复杂类型
- Log4Net异常日志记录在asp.net mvc3.0的应用
- ASP.NET开启服务器端调试的方法...
- 项目实践精解:ASP.NET应用开发
- asp.net开发数据库应用的性能方面的考虑
- Asp.net 中HttpHandler,HttpModule,IHttpHandlerFactory的原理与应用(一)
- 【ASP.NET中的Global.asax以及Web应用的生命周期】
- Asp.net 服务器端控件
- 海洋工作室——网站建设专家:【原】在线订餐系统,可商业化!订单系统共享啦!!应用技术: AJAX, LINQ, MASTERPAGE, ASP.NET
- javascript 获取asp.net服务器端控件id
- 《ASP.NET Ajax程序设计-第I卷:服务器端ASP.NET 2.0 AJAX Extensions与ASP.NET AJAX Control Toolkit》2007年4月16日 china-pub全国首发!+ 赠书名单已经确定
- 保护 ASP.NET 应用的安全