/// <summary> /// Phuns the partial. /// </summary> /// <param name="contentName">Name of the content.</param> /// <param name="url">The URL.</param> /// <returns> /// Partial content. /// </returns> /// <exception cref="System.ArgumentException">contentName is required.</exception> protected internal virtual string PhunPartial(string contentName, Uri url) { if (string.IsNullOrEmpty(contentName)) { throw new ArgumentException("contentName is required."); } var result = string.Empty; var config = this.ContentConfig ?? Bootstrapper.Default.ContentConfig; var content = new ContentModel() { Path = this.Normalize( "/page" + (contentName.Contains("/") ? contentName : url.AbsolutePath + "/" + contentName)), Host = this.GetTenantHost(url) }; config.ContentRepository.Retrieve(content, true); if (content.DataLength != null) { content.SetDataFromStream(); result = System.Text.Encoding.UTF8.GetString(content.Data).GetHtmlBody(); } return result; }