/* * 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); }
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")); }