asp.net中弹出对话框,ListView中隐藏控件,validateRequest

来源:互联网 发布:怎么制作淘宝店铺标志 编辑:程序博客网 时间:2024/05/16 17:11

网上收集的

弹出对话框

public static void ShowMessage(string strMsg)        {            System.Web.HttpContext.Current.Response.Write("<Script Language='JavaScript'>window.alert('" + strMsg + "');</script>");        }        public static void ShowMessage(System.Web.UI.Page page, string strMsg)        {            page.Response.Write("<Script Language='JavaScript'>window.alert('" + strMsg + "');</script>");        }        public static void ShowMessage(string strMsg, string Url)        {            System.Web.HttpContext.Current.Response.Write("<Script Language='JavaScript'>window.alert('" + strMsg + "');window.location.href ='" + Url + "'</script>");        }        public static void ShowMessage(System.Web.UI.Page page, string strMsg, string Url)        {            page.Response.Write("<Script Language='JavaScript'>window.alert('" + strMsg + "');window.location.href ='" + Url + "'</script>");        }        public static void ShowConfirm(string strMsg, string strUrl_Yes, string strUrl_No)        {            System.Web.HttpContext.Current.Response.Write("<Script Language='JavaScript'>if ( window.confirm('" + strMsg + "')) {  window.location.href='" + strUrl_Yes +                              "' } else {window.location.href='" + strUrl_No + "' };</script>");        }

有一种情况没有不知道如何实现,我要删除一个记录,弹出提示如“是否删除”,确定则删除,取消则不变,怎么做?

    public void Confirm(string str_Message, string btn_Redirect_Flow, string btn_Redirect_Self, Page page)    {        page.ClientScript.RegisterStartupScript(page.GetType(), " ","<script> if (confirm('" + str_Message + "')==true){document.forms(0)." + btn_Redirect_Flow + ".click();}else{document.forms(0)." + btn_Redirect_Self + ".click();}</script>");    }

上面这一招利用后台RegisterStartupScript方法注入脚本比之前的Response.Write要好很多。如上面那个过程中的参数分别为

  1. str_Message:要提示的信息,比如“是否确定删除?”
  2. btn_Redirect_Flow:当按确定时,要执行的按钮的Click事件
  3. btn_Redirect_Self: 当按取消时,要执行的按钮的Click事件
  4. page: 一个Page类的

前的提示信息都可以用这种方法(RegisterStartupScript)来做。

ListView中隐藏控件

首先我们无法得到ListView中Item的Id,但是在ListView的OnItemDataBound事件中可以做到,代码如:

    protected void ListView1_ItemDataBound(object sender, ListViewItemEventArgs e)    {        if (Session["UserId"] != null)        {            if (Session["UserId"].ToString().ToUpper() != iHomePage.Database.SupperUserId)            {                if((e.Item.FindControl("DeleteButton") as Button)!=null)                    (e.Item.FindControl("DeleteButton") as Button).Visible = false;            }        }        else        {            (e.Item.FindControl("EditButton") as Button).Visible = false;            (e.Item.FindControl("DeleteButton") as Button).Visible = false;        }    }

validateRequest

在 Web 应用程序中,要阻止依赖于恶意输入字符串的黑客攻击,约束和验证用户输入是必不可少的。跨站点脚本攻击就是此类攻击的一个示例。其他类型的恶意数据或不需要的数据可以通过各种形式的输入在请求中传入。通过在应用程序中的较低级别限制允许通过的数据类型,就可以阻止不希望的事件,即使当使用代码的程序员没有恰当地使用合适的验证技术时也是如此。

当请求验证检测到潜在的恶意客户端输入时,会引发此异常来中止请求处理。请求中止能够指示危害您的应用程序安全的企图,例如跨站点脚本攻击。强烈建议让您的应用程序显式地检查与请求中止有关的所有输入。不过,您也可以通过将 @ Page 指令中的validateRequest 属性设置为false 来禁用请求验证,如下面的示例所示:

<%@ Page validateRequest="false" %>

要禁用应用程序的请求验证,必须修改应用程序的 Web.config 文件或创建一个 Web.config 文件,并将 pages 节的validateRequest 属性设置为false,如下面的示例所示:

<configuration> <system.web> <pages validateRequest="false" /> </system.web> </configuration> 

在VS2010里面还要添加这样一句:<httpRuntime requestValidationMode="2.0" />

要禁用服务器上所有应用程序的请求验证,可以对 Machine.config 文件作此修改

还有一步是在page中在onerror事件中加入处理:

protected void Page_Error(object sender, EventArgs e)    {        Exception ex = Server.GetLastError();        if (ex is HttpRequestValidationException)        {            Response.Redirect("Default.aspx");            Server.ClearError();        }    }


 

原创粉丝点击