Exemple #1
0
        /// <summary>
        ///     Render the Html in the same way that the DefaultViewService does
        /// </summary>
        /// <param name="model"></param>
        /// <param name="page"></param>
        /// <param name="html"></param>
        /// <param name="clientName"></param>
        /// <returns></returns>
        private Task <Stream> Render(
            CommonViewModel model,
            string page,
            string html,
            string clientName = null)
        {
            Uri uriSiteUrl;
            var applicationPath = string.Empty;

            if (Uri.TryCreate(model.SiteUrl, UriKind.RelativeOrAbsolute, out uriSiteUrl))
            {
                if (uriSiteUrl.IsAbsoluteUri)
                {
                    applicationPath = uriSiteUrl.AbsolutePath;
                }
                else
                {
                    applicationPath = uriSiteUrl.OriginalString;
                    if (applicationPath.StartsWith("~/"))
                    {
                        applicationPath = applicationPath.TrimStart('~');
                    }
                }

                if (applicationPath.EndsWith("/"))
                {
                    applicationPath = applicationPath.Substring(0, applicationPath.Length - 1);
                }
            }

            var json = JsonConvert.SerializeObject(
                model,
                Formatting.None,
                new JsonSerializerSettings {
                ContractResolver = new CamelCasePropertyNamesContractResolver()
            });

            var additionalStylesheets = this.BuildTags(
                "<link href='{0}' rel='stylesheet'>",
                applicationPath,
                this.config.Stylesheets);
            var additionalScripts = this.BuildTags("<script src='{0}'></script>", applicationPath, this.config.Scripts);

            var variables = new
            {
                siteName = Encoder.HtmlEncode(model.SiteName),
                applicationPath,
                model = Encoder.HtmlEncode(json),
                page,
                stylesheets = additionalStylesheets,
                scripts     = additionalScripts,
                clientName
            };

            html = Replace(html, variables);

            return(Task.FromResult(this.StringToStream(html)));
        }
 public static string HtmlEncode(string str)
 {
     return(Encoder.HtmlEncode(str));
 }
 public static string HtmlEncode(string str, bool useNamedEntities)
 {
     return(Encoder.HtmlEncode(str, useNamedEntities));
 }
 public static string HtmlEncode(object value)
 {
     return(value == null ? string.Empty : Encoder.HtmlEncode(value.ToString()));
 }