• [置顶] 当前上下文不存在 ScriptManager 的原因分析以及解决方案 (System.Web.Extensions)


    错误如下图:

    当我们在写web程序的时候,有时候避免不了要再后台弹出一个提示框,在winform中我们可以用MssageBox() 类来实现,在web开发中,我们只能借助于javascript来实现了

    .net中为我们提供了这样一个类ScriptManager来帮助我们解决这样的问题,而有些时候我们却在使用的时候容易出现这样一个错误,”当前上下文不存在 ScriptManager ” ,这就很郁闷了,差资料显示 ScriptManager 类存在于 System.Web.UI 命名空间中,这时我们在类的头部添加引用,using System.Web.UI;或者是继承 System.Web.UI.Page 这样还是不行,郁闷了,查资料,显示  System.Web.UI类存在于 程序集:  System.Web.Extensions(在 System.Web.Extensions.dll 中),这时,有人会在类头部这样写,Using System.Web.Extensions; 这样是不行的,我们必须在项目中,添加引用,

    示例如下图:


    第二步:


    msdn论坛:http://msdn.microsoft.com/zh-cn/library/system.web.ui.scriptmanager%28v=vs.100%29.aspx点击打开链接



    示例类如下:类PageUtil

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Security.Cryptography;
    using System.Text;
    using System.Text.RegularExpressions;
    
    
    namespace shouqiang_Wei
    
    {
        public class PageUtil:System.Web.UI.Page
        {
            #region 截取字符长度
            /// <summary>
            /// 截取字符长度
            /// </summary>
            /// <param name="inputString">字符</param>
            /// <param name="len">长度</param>
            /// <returns></returns>
            public static string CutString(string inputString, int len)
            {
                if (string.IsNullOrEmpty(inputString))
                    return "";
                inputString = DropHTML(inputString);
                ASCIIEncoding ascii = new ASCIIEncoding();
                int tempLen = 0;
                string tempString = "";
                byte[] s = ascii.GetBytes(inputString);
                for (int i = 0; i < s.Length; i++)
                {
                    if ((int)s[i] == 63)
                    {
                        tempLen += 2;
                    }
                    else
                    {
                        tempLen += 1;
                    }
    
                    try
                    {
                        tempString += inputString.Substring(i, 1);
                    }
                    catch
                    {
                        break;
                    }
    
                    if (tempLen > len)
                        break;
                }
                //如果截过则加上半个省略号 
                byte[] mybyte = System.Text.Encoding.Default.GetBytes(inputString);
                if (mybyte.Length > len)
                    tempString += "…";
                return tempString;
            }
            #endregion
            #region 清除HTML标记
            public static string DropHTML(string Htmlstring)
            {
                if (string.IsNullOrEmpty(Htmlstring)) return "";
                //删除脚本  
                Htmlstring = Regex.Replace(Htmlstring, @"<script[^>]*?>.*?</script>", "", RegexOptions.IgnoreCase);
                //删除HTML  
                Htmlstring = Regex.Replace(Htmlstring, @"<(.[^>]*)>", "", RegexOptions.IgnoreCase);
                Htmlstring = Regex.Replace(Htmlstring, @"([\r\n])[\s]+", "", RegexOptions.IgnoreCase);
                Htmlstring = Regex.Replace(Htmlstring, @"-->", "", RegexOptions.IgnoreCase);
                Htmlstring = Regex.Replace(Htmlstring, @"<!--.*", "", RegexOptions.IgnoreCase);
                Htmlstring = Regex.Replace(Htmlstring, @"&(quot|#34);", "\"", RegexOptions.IgnoreCase);
                Htmlstring = Regex.Replace(Htmlstring, @"&(amp|#38);", "&", RegexOptions.IgnoreCase);
                Htmlstring = Regex.Replace(Htmlstring, @"&(lt|#60);", "<", RegexOptions.IgnoreCase);
                Htmlstring = Regex.Replace(Htmlstring, @"&(gt|#62);", ">", RegexOptions.IgnoreCase);
                Htmlstring = Regex.Replace(Htmlstring, @"&(nbsp|#160);", " ", RegexOptions.IgnoreCase);
                Htmlstring = Regex.Replace(Htmlstring, @"&(iexcl|#161);", "\xa1", RegexOptions.IgnoreCase);
                Htmlstring = Regex.Replace(Htmlstring, @"&(cent|#162);", "\xa2", RegexOptions.IgnoreCase);
                Htmlstring = Regex.Replace(Htmlstring, @"&(pound|#163);", "\xa3", RegexOptions.IgnoreCase);
                Htmlstring = Regex.Replace(Htmlstring, @"&(copy|#169);", "\xa9", RegexOptions.IgnoreCase);
    
                Htmlstring = Regex.Replace(Htmlstring, @"&#(\d+);", "", RegexOptions.IgnoreCase);
                Htmlstring.Replace("<", "");
                Htmlstring.Replace(">", "");
                Htmlstring.Replace("\r\n", "");
                Htmlstring = HttpContext.Current.Server.HtmlEncode(Htmlstring).Trim();
                return Htmlstring;
            }
            #endregion
            /// <summary>
            /// 在web页面上显示一个对话框
            /// </summary>
            /// <param name="page"></param>
            /// <param name="msg"></param>
            public static void ShowMsgBox(System.Web.UI.Control page, string msg)
            {
                string m = HttpUtility.HtmlEncode(msg);
                ExecJavaScript(page, "alert('" + m + "');");
            }
            public static void ShowCfmMsgBox(System.Web.UI.Control page, string msg)
            {
                string m = HttpUtility.HtmlEncode(msg);
                ExecJavaScript(page, "confirm('" + m + "');");
            }
    
            /// <summary>
            /// 显示提示信息并转向新的页面
            /// </summary>
            /// <param name="page"></param>
            /// <param name="msg"></param>
            /// <param name="newurl"></param>
            public static void ShowMsgBoxAndRedirect(System.Web.UI.Control page, string msg, string newurl)
            {
                string m = HttpUtility.HtmlEncode(msg);
                ExecJavaScript(page, "alert('" + m + "'); window.location='" + newurl + "';");
            }
            /// <summary>
            /// Add by shouqiang Wei 改成 confirm 这样的话就可以返回了...> 不知道能不能行?
            /// </summary>
            /// <param name="page"></param>
            /// <param name="msg"></param>
            /// <param name="newurl"></param>
            public static void ShowCfmMsgBoxAndRedirect(System.Web.UI.Control page, string msg, string newurl)
            {
                string m = HttpUtility.HtmlEncode(msg);
                ExecJavaScript(page, "if(confirm('" + m + "')) window.location='" + newurl + "' ;");
    
            }
    
            /// <summary>
            /// 子框架中转向
            /// </summary>
            /// <param name="page"></param>
            /// <param name="newurl"></param>
            public static void ParentPageRedirect(System.Web.UI.Control page, string newurl)
            {
    
                ExecJavaScript(page, " self.parent.window.location='" + newurl + "';");
            }
    
    
            /// <summary>
            /// 在web页面上添加一段javascript
            /// </summary>
            /// <param name="page"></param>
            /// <param name="script"></param>
            public static void ExecJavaScript(System.Web.UI.Control page, string script)
            {
    
    
                ScriptManager.RegisterStartupScript(page, page.GetType(), "a", script, true);
            }
    
    
            /// <summary>
            /// MD5摘要
            /// </summary>
            /// <param name="cleanString"></param>
            /// <returns></returns>
            public static string Md5Encrypt(string cleanString)
            {
                Byte[] clearBytes = new UnicodeEncoding().GetBytes(cleanString);
                Byte[] hashedBytes = ((HashAlgorithm)CryptoConfig.CreateFromName("MD5")).ComputeHash(clearBytes);
                return BitConverter.ToString(hashedBytes);
            }
    
            /// <summary>
            /// SQL防注入攻击,数据过滤
            /// </summary>
            /// <param name="value">要过滤的数据</param>
            /// <returns>过滤后的数据</returns>
            public static string SQLFilter(string value)
            {
                if (String.IsNullOrEmpty(value)) return "";
    
                value = value.Trim();
                value = HttpUtility.HtmlEncode(value);
    
                value = value.Replace(" and ", "***");
                value = value.Replace(" or ", "***");
                value = value.Replace(" truncate ", "***");
                value = value.Replace(" from ", "***");
                value = value.Replace(" select ", "***");
                value = value.Replace(" insert ", "***");
                value = value.Replace(" update ", "***");
                value = value.Replace(" delete ", "***");
                value = value.Replace(" drop ", "***");
                value = value.Replace(" count ", "***");
                value = value.Replace(" exec ", "***");
    
                return value;
            }
            public static string GetSex(object obj)
            {
                if (obj == null)
                {
                    return "未知";
                }
                try
                {
                    bool sex = bool.Parse(obj.ToString());
                    if (sex)
                    {
                        return "男";
                    }
                    else
                        return "女";
                }
                catch (Exception ex)
                {
                    return "未知";
                }
            }
    
            public static string GetClosedStatus(object obj)
            {
                if (obj == null)
                {
                    return "未知";
                }
                else
                {
                    try
                    {
                        int n = int.Parse(obj.ToString());
                        if (n == 1)
                        {
                            return "关闭";
                        }
                        else if (n == 0)
                            return "开放";
                        else
                            return "未知";
                    }
                    catch (Exception ex)
                    {
                        return "未知";
                    }
    
                }
            }
    
    
            public static string SubString(object obj, int length)
            {
                if (obj == null)
                    return "";
                string str = obj.ToString();
                if (str.Length > length)
                    return str.Substring(0, length);
                return str;
    
            }
    
    
        }
    }


  • 相关阅读:
    [译文] 实体与值对象到底是不是一回事?
    实现 WebApi 自托管服务宿主于 WinForms 及其交互
    [译文] C# 8 已成旧闻, 向前, 抵达 C# 9!
    [译文] 为什么你在 C# 里总是应该使用 "var" 关键字
    通过设置iis在局域网中访问网页
    windows 10 安装使用kafka
    ASP.NET Core 2.1 中的 HttpClientFactory (Part 4) 整合Polly实现瞬时故障处理
    ASP.NET Core 2.1 中的 HttpClientFactory (Part 3) 使用Handler实现传出请求中间件
    ASP.NET Core 2.1 中的 HttpClientFactory (Part 2) 定义命名化和类型化的客户端
    Asp.net Core 2.0 OpenId Connect Handler缺失Claims?
  • 原文地址:https://www.cnblogs.com/wsq724439564/p/3258186.html
Copyright © 2020-2023  润新知