您的位置:首页 > 编程语言 > ASP

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" %>

功能勉强实现了,不过不知道这样用会有什么隐患.又或者有更好的实现方式,请路过的朋友指点一下,感谢.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐