예제 #1
0
        /// <summary>
        /// 根据控件输出模式,输出控件
        /// </summary>
        /// <param name="ctr">要输出的控件</param>
        /// <param name="baseRenderString">控件原输出内容</param>
        /// <param name="renderMode">输出模式</param>
        /// <remarks>根据控件输出模式,输出控件</remarks>
        internal static void RenderControlOnlySelf(this Control ctr, string baseRenderString, ControlRenderMode renderMode)
        {
            HttpResponse response = HttpContext.Current.Response;

            response.ClearContent();
            response.ContentEncoding = Encoding.UTF8;
            response.Charset         = "utf-8";

            string htmlContentType = WebAppSettings.GetContentTypeByKey(ResponseContentTypeKey.HTML);
            string contentType     = WebAppSettings.GetContentTypeByKey(renderMode.ContentTypeKey);

            if (contentType == string.Empty)
            {
                contentType = htmlContentType;
            }

            response.ContentType = contentType;

            string renderStr = contentType == htmlContentType?
                               GetRenderSingleControlString(ctr, baseRenderString) :
                                   GetFileRenderSingleControlString(baseRenderString, contentType);

            switch (renderMode.DispositionType)
            {
            case ResponseDispositionType.Inline:
            case ResponseDispositionType.Attachment:
                response.AppendHeader("CONTENT-DISPOSITION",
                                      string.Format("{0};filename={1}", renderMode.DispositionType, response.EncodeFileNameInContentDisposition(renderMode.AttachmentFileName)));
                break;
            }

            response.Write(renderStr);
            response.End();
        }
예제 #2
0
        /// <summary>
        /// 向页面添加配置扩展信息
        /// </summary>
        /// <param name="context">HttpContext</param>
        /// <param name="checkAutoLoad"></param>
        public static void LoadConfigPageContent(this HttpContext context, bool checkAutoLoad)
        {
            if (context != null)
            {
                PageContentSection section = ConfigSectionFactory.GetPageExtensionSection();

                Page page = context.GetCurrentPage();

                if (page != null)
                {
                    if (checkAutoLoad)
                    {
                        if (section.AutoLoad == false)
                        {
                            return;
                        }

                        if (page.Header == null)
                        {
                            return;
                        }

                        string headerAutoLoad = page.Header.Attributes["autoLoad"];

                        if (headerAutoLoad.IsNotEmpty() && headerAutoLoad.ToLower() == "false")
                        {
                            return;
                        }
                    }

                    if (WebAppSettings.IsWebApplicationCompilationDebug())
                    {
                        RegisterCssInHeader(page, section.CssClasses.Debug);
                    }
                    else
                    {
                        RegisterCssInHeader(page, section.CssClasses.Release);
                    }

                    RegisterCssInHeader(page, section.CssClasses.All);

                    if (WebAppSettings.IsWebApplicationCompilationDebug())
                    {
                        RegisterScriptInHeader(page, section.Scripts.Debug);
                    }
                    else
                    {
                        RegisterScriptInHeader(page, section.Scripts.Release);
                    }

                    RegisterScriptInHeader(page, section.Scripts.All);
                }
            }
        }
예제 #3
0
        /// <summary>
        /// Response客户端弹出错误框
        /// </summary>
        /// <param name="response">HttpResponse对象</param>
        /// <param name="strMessage">错误框消息</param>
        /// <param name="strDetail">错误框详细信息</param>
        /// <param name="strTitle">错误框Title</param>
        public static void WriteShowClientErrorScriptBlock(this HttpResponse response, string strMessage, string strDetail, string strTitle)
        {
            if (response != null)
            {
                HttpContextExtension.ResponseClientMessageCommonScriptBlock();

                if (WebAppSettings.AllowResponseExceptionStackTrace() == false)
                {
                    strDetail = string.Empty;
                }

                string script = ScriptHelper.GetShowClientErrorScript(strMessage, strDetail, strTitle);

                script = DeluxeClientScriptManager.AddScriptTags(script);

                WebApplicationExceptionExtension.TryWriteAppLog(strMessage, strDetail);

                response.Write(script);
            }
        }
예제 #4
0
        private static void ResponseErrorMessage(HttpContext context, string strErrorMsg, string strStackTrace)
        {
            string errorFormat = ResourceHelper.LoadStringFromResource(Assembly.GetExecutingAssembly(),
                                                                       "MCS.Web.Responsive.Library.HttpModules.ApplicationErrorModuleTemplate.htm");

            Page   page     = context.CurrentHandler is Page ? (Page)context.CurrentHandler : new Page();
            string imageUrl = ApplicationErrorLogSection.GetSection().LogoImage;

            if (imageUrl.IsNullOrEmpty())
            {
                imageUrl = page.ClientScript.GetWebResourceUrl(typeof(ApplicationErrorModule),
                                                               "MCS.Web.Responsive.Library.HttpModules." +
                                                               Translator.Translate(Define.DefaultCategory, "ApplicationErrorModuleTemplate_stopLogo.gif"));
            }

            string goBackBtnDisplay = context.Request.UrlReferrer != null ? "inline" : "none";
            string closePromptValue = context.Request.UrlReferrer != null ? "true" : "false";

            string[] strArray = errorFormat.Split('$');
            for (int i = 0; i < strArray.Length; i++)
            {
                switch (strArray[i])
                {
                case "globalStyle":
                    if (ApplicationErrorLogSection.GetSection().GlobalStyle.IsNotEmpty())
                    {
                        strArray[i] = string.Format("<link href=\"{0}\" type=\"text/css\" rel=\"stylesheet\" />",
                                                    ApplicationErrorLogSection.GetSection().GlobalStyle);
                    }
                    else
                    {
                        strArray[i] = string.Empty;
                    }
                    break;

                case "imageUrl":
                    strArray[i] = imageUrl;
                    break;

                case "goBackBtnDisplay":
                    strArray[i] = goBackBtnDisplay;
                    break;

                case "closePromptValue":
                    strArray[i] = closePromptValue;
                    break;

                case "copyHint":
                    strArray[i] = HttpUtility.HtmlAttributeEncode(Translator.Translate(Define.DefaultCategory, "复制信息"));
                    break;

                case "copyCompletedPrompt":
                    strArray[i] = HttpUtility.HtmlAttributeEncode(Translator.Translate(Define.DefaultCategory, "复制信息完成"));
                    break;

                case "errorMessage":
                    strArray[i] = HttpUtility.HtmlEncode(strErrorMsg);
                    break;

                case "errorStackTrace":
                    string errorMessage = string.Empty;

                    if (WebAppSettings.AllowResponseExceptionStackTrace())
                    {
                        errorMessage += "\r\n" + strStackTrace;
                    }

                    strArray[i] = errorMessage.Replace("\r\n", "<br/>");
                    break;

                case "clickToDetail":
                    strArray[i] = Translator.Translate(Define.DefaultCategory, "点击此处展开详细信息......");
                    break;

                case "clickToCloseDetail":
                    strArray[i] = Translator.Translate(Define.DefaultCategory, "点击此处关闭详细信息......");
                    break;

                case "ConfirmClose":
                    strArray[i] = Translator.Translate(Define.DefaultCategory, "您确认要关闭窗口吗?");
                    break;

                case "errorMessageHead":
                    strArray[i] = Translator.Translate(Define.DefaultCategory, "错误提示");
                    break;

                case "returnBtn":
                    strArray[i] = Translator.Translate(Define.DefaultCategory, "返回");
                    break;

                case "closeBtn":
                    strArray[i] = Translator.Translate(Define.DefaultCategory, "关闭");
                    break;

                case "notifyMailAddress":
                    string mailAddress = ApplicationErrorLogSection.GetSection().NotifyMailAddress;

                    if (mailAddress.IsNotEmpty())
                    {
                        strArray[i] = HttpUtility.HtmlAttributeEncode(string.Format(@"mailto://{0}", mailAddress));
                    }
                    else
                    {
                        strArray[i] = "#";
                    }

                    break;
                }
            }

            context.Response.Clear();
            context.Response.Write(string.Join("", strArray));
            context.Response.Flush();
            context.Response.End();
        }