示例#1
0
        /*
         * protected virtual string GetViewPath(string area, string controller, string lang, string name, string extension)
         * {
         *  var result = "";
         *  var _lang = "";
         *  var ext = extension.Replace(".", "_") + ".";
         *
         *  if (!string.IsNullOrEmpty(area))
         *  {
         *      if (WebConstants.SeparateClientSideStaticFilesByLanguage && (WebConstants.MultiLanguageClientAwareController == MultiLanguageRoutingOptions.Both || WebConstants.MultiLanguageClientAwareController == MultiLanguageRoutingOptions.OnlyLanguageBased)
         *                  && !string.IsNullOrEmpty(lang))
         *      {
         *          _lang = "." + lang;
         *      }
         *
         *      result = $"~/Areas/{area}/Views/{controller}/{ext}{name}{_lang}.cshtml";
         *  }
         *  else
         *  {
         *      result = $"~/Views/{controller}/{ext}{name}{_lang}.cshtml";
         *  }
         *
         *  return result;
         * }
         */
        protected virtual string GetContentFromView(string name, string extension)
        {
            var partial = Request.QueryString["par"] == "1";
            var path    = ClientSideContentProvider.GetViewPath(ClientSideContentProvider.Area, ClientSideContentProvider.Controller, ClientSideContentProvider.Lang, name, extension);

            //var lang = "";
            //var ext = extension.Replace(".", "_") + ".";

            //if (!string.IsNullOrEmpty(ClientSideContentProvider.Area))
            //{
            //    if (WebConstants.SeparateClientSideStaticFilesByLanguage && (WebConstants.MultiLanguageClientAwareController == MultiLanguageRoutingOptions.Both || WebConstants.MultiLanguageClientAwareController == MultiLanguageRoutingOptions.OnlyLanguageBased)
            //                && !string.IsNullOrEmpty(ClientSideContentProvider.Lang))
            //    {
            //        lang = "." + ClientSideContentProvider.Lang;
            //    }

            //    path = $"~/Areas/{ClientSideContentProvider.Area}/Views/{ClientSideContentProvider.Controller}/{ext}{name}{lang}.cshtml";
            //}
            //else
            //{
            //    path = $"~/Views/{ClientSideContentProvider.Controller}/{ext}{name}{lang}.cshtml";
            //}

            Logger?.Log($"GetContentFromView: {path}");

            var result = this.RenderViewToString(path, null, partial);

            return(result);
        }
示例#2
0
        protected virtual async Task <ActionResult> GetContentAsync(string name,
                                                                    string type,
                                                                    string mime,
                                                                    string extension,
                                                                    string dynamicResourceResourceBasePathKey,
                                                                    string dynamicResourceResourceDefaultBasePath,
                                                                    string dynamicResourcePathKey,
                                                                    string dynamicResourceDefaultBasePath,
                                                                    Func <string, string> minify)
        {
            var basePath = "";
            var result   = "";
            var ok       = true;

            InitDynamicContent();

            Logger?.LogCategory($"GetContent(): {nameof(name)} = {name},{nameof(type)} = {type}");
            Logger?.Log($@"Args({nameof(mime)}:{mime},
{nameof(extension)}:{extension},
{nameof(dynamicResourceResourceBasePathKey)}:{dynamicResourceResourceBasePathKey},
{nameof(dynamicResourceResourceDefaultBasePath)}:{dynamicResourceResourceDefaultBasePath},
{nameof(dynamicResourcePathKey)}:{dynamicResourcePathKey},
{nameof(dynamicResourceDefaultBasePath)}:{dynamicResourceDefaultBasePath})");

            if (ExternalClientSideItemType.Resource.EqualsTrimmedIgnoreCase(type))
            {
                try
                {
                    basePath = ClientSideContentProvider.GetResourceBasePath(dynamicResourceResourceBasePathKey, dynamicResourceResourceDefaultBasePath);
                    result   = await ClientSideContentProvider.GetResourceAsync(this, basePath, name, extension);
                }
                catch (Exception e)
                {
                    var r = HandleException(e, mime);

                    if (r != null)
                    {
                        return(r);
                    }

                    if (RevealExceptions)
                    {
                        return(new HttpStatusCodeResult(System.Net.HttpStatusCode.InternalServerError, e.ToString("\n")));
                    }
                    else
                    {
                        return(new HttpStatusCodeResult(System.Net.HttpStatusCode.InternalServerError, "Reading file error"));
                    }
                }
            }
            else
            if (ExternalClientSideItemType.DynamicFile.EqualsTrimmedIgnoreCase(type))
            {
                try
                {
                    switch (extension)
                    {
                    case ".css":
                        basePath = GetBaseCssPath(name);
                        break;

                    case ".js":
                        basePath = GetBaseJsPath(name);
                        break;
                    }

                    if (string.IsNullOrEmpty(basePath))
                    {
                        basePath = ClientSideContentProvider.GetDynamicFileBasePath(extension, dynamicResourcePathKey, dynamicResourceDefaultBasePath);
                    }

                    result = await ClientSideContentProvider.GetFileAsync(basePath, name, extension);
                }
                catch (HttpNotFoundException e)
                {
                    var r = HandleException(e, mime);

                    if (r != null)
                    {
                        return(r);
                    }

                    if (RevealExceptions)
                    {
                        return(HttpNotFound(e.ToString("\n")));
                    }
                    else
                    {
                        return(HttpNotFound());
                    }
                }
                catch (Exception e)
                {
                    var r = HandleException(e, mime);

                    if (r != null)
                    {
                        return(r);
                    }

                    if (RevealExceptions)
                    {
                        return(new HttpStatusCodeResult(System.Net.HttpStatusCode.InternalServerError, e.ToString("\n")));
                    }
                    else
                    {
                        return(new HttpStatusCodeResult(System.Net.HttpStatusCode.InternalServerError, "Reading file error"));
                    }
                }
            }
            else
            if (ExternalClientSideItemType.RazorView.EqualsTrimmedIgnoreCase(type))
            {
                try
                {
                    result = GetContentFromView(name, extension);
                }
                catch (Exception e)
                {
                    var r = HandleException(e, mime);

                    if (r != null)
                    {
                        return(r);
                    }

                    if (RevealExceptions)
                    {
                        return(new HttpStatusCodeResult(System.Net.HttpStatusCode.InternalServerError, e.ToString("\n")));
                    }
                    else
                    {
                        return(new HttpStatusCodeResult(System.Net.HttpStatusCode.InternalServerError, "Generating result error"));
                    }
                }
            }
            else
            if (ExternalClientSideItemType.DatabaseRecord.EqualsTrimmedIgnoreCase(type))
            {
                Logger?.Log("DatabaseRecord resource are not supported yet");
                // not implemented yet
                ok = false;
            }
            else
            {
                Logger?.Log("invalid type");
                ok = false;
            }

            if (ok)
            {
                Logger?.Log($"result length:");
                Logger?.Log($"non-minified: {result.Length}");

                result = minify(result);

                Logger?.Log($"minified: {result.Length}");

                return(Content(result, mime));
            }

            Logger?.Log("FAILED: refer to exception logs.");

            return(new HttpStatusCodeResult(System.Net.HttpStatusCode.InternalServerError, "Invalid type"));
        }