private void WriteCharacterWithCheck(char ch) { if (Settings.ExtractLinks && Char.IsLetter(ch) && ( _input.Match("http://") || _input.Match("https://") || _input.Match("ftp://") || _input.Match("mailto:") || _input.Match("www."))) { StringBuilder lb = new StringBuilder(); string url; // едим все до пробела, или до конца строки do { if (Char.IsWhiteSpace(_input.Current)) { _input.Position--; break; } lb.Append(_input.Current); }while (_input.Read()); // отдаем обратно не буквы-цифры и слеши while (lb.Length > 0 && Char.IsPunctuation(lb[lb.Length - 1])) { lb.Length--; _input.Position--; } url = (lb[0] == 'w') ? "http://" + lb.ToString() : lb.ToString(); Uri uri; if (Uri.TryCreate(url, UriKind.Absolute, out uri)) { if (String.Equals(uri.Scheme, "mailto", StringComparison.OrdinalIgnoreCase)) { lb.Remove(0, 7); } HtmlElementBuilder tag = new HtmlElementBuilder("a"); tag.Attributes["href"] = uri.OriginalString; tag.InnerHtml = SecurityElement.Escape(lb.ToString()); Write(FormatElement(tag, HtmlElementRenderMode.Normal)); } else { _output.Append(lb.ToString()); } } else if (Char.IsWhiteSpace(ch)) { CloseNoBreak(); Write(ch); } else { Write(ch); } }
public HtmlFormatterFilter(HtmlFilterSettings settings, HtmlElementRule container, HtmlElementBuilder element, StringWriter output) : base(TextReader.Null, output, settings) { _contents = output.GetStringBuilder(); _container = container; _element = element; }
protected virtual void Dispose(bool disposing) { if (disposing && !_disposed) { _disposed = true; HtmlElementBuilder builder = new HtmlElementBuilder("form"); _response.Write(builder.ToString(HtmlElementRenderMode.EndTag)); } }
protected virtual string FormatElement(HtmlElementBuilder element, HtmlElementRenderMode mode) { Precondition.Require(element, () => Error.ArgumentNull("element")); if (Formatter == null) { return(element.ToString(mode)); } return(Formatter(element, mode)); }
protected string FormatElement(HtmlElementRule parent, HtmlElementBuilder element, HtmlElementRenderMode renderMode) { using (StringWriter writer = new StringWriter()) { HtmlFormatterFilter filter = new HtmlFormatterFilter( _settings, parent, element, writer); filter.RenderMode = renderMode; filter.Parameters = Parameters; filter.Execute(); return(writer.ToString()); } }
public static string Serialize(this HtmlHelper helper, string name, object data, SerializationMode mode) { Precondition.Require(helper, () => Error.ArgumentNull("helper")); Precondition.Defined(name, () => Error.ArgumentNull("name")); ModelStateSerializer serializer = new ModelStateSerializer(); string elementName = helper.Context.ViewData.Template.GetHtmlElementName(name); string value = serializer.Serialize(data ?? helper.Context.ViewData.Model, mode); HtmlElementBuilder builder = new HtmlElementBuilder("input"); builder.Attributes["type"] = "hidden"; builder.Attributes["name"] = elementName; builder.Attributes["value"] = value; return builder.ToString(); }
public string Tag(string tagName, object attributes, params string[] content) { HtmlElementBuilder builder = new HtmlElementBuilder(tagName, attributes, (content == null) ? null : String.Join("", content)); return builder.ToString(); }
public string Tag(string tagName, object attributes) { HtmlElementBuilder builder = new HtmlElementBuilder(tagName, attributes, null); return builder.ToString(); }
/// <summary> /// Returns the string for a hidden input containing a /// token used to prevent CSRF attacks. /// </summary> /// <param name="value">An extended value to store in the token.</param> public string Token(string value) { RequestValidationToken token = RequestValidationToken.Create(Context.Context); HtmlElementBuilder builder = new HtmlElementBuilder("input"); builder.Attributes.Add("type", "hidden"); builder.Attributes.Add("name", ValidateRequestTokenAttribute.ValidationFieldName); builder.Attributes.Add("value", token.Serialize()); return builder.ToString(); }
protected string FormatElement(HtmlElementRule parent, HtmlElementBuilder element, HtmlElementRenderMode renderMode) { using (StringWriter writer = new StringWriter()) { HtmlFormatterFilter filter = new HtmlFormatterFilter( _settings, parent, element, writer); filter.RenderMode = renderMode; filter.Parameters = Parameters; filter.Execute(); return writer.ToString(); } }
/// <summary> /// Renders the ScriptManager to the page. /// </summary> public void Render() { TextWriter writer = _context.Context.Response.Output; HtmlElementBuilder builder = new HtmlElementBuilder("script", new { Type = "text/javascript" }, String.Empty); foreach (string path in _includes.Values) { builder.Attributes.Merge("src", path, true); writer.WriteLine(builder.ToString()); } if (_blocks.Values.Any(b => !b.IsEmpty)) { builder.Attributes.Remove("src"); writer.WriteLine(builder.ToString(HtmlElementRenderMode.StartTag)); writer.WriteLine("//<![CDATA["); foreach (ScriptBlock script in _blocks.Values) script.Render(writer); writer.WriteLine("//]]>"); writer.WriteLine(builder.ToString(HtmlElementRenderMode.EndTag)); } _blocks.Clear(); _includes.Clear(); }
private void WriteCharacterWithCheck(char ch) { if (Settings.ExtractLinks && Char.IsLetter(ch) && ( _input.Match("http://") || _input.Match("https://") || _input.Match("ftp://") || _input.Match("mailto:") || _input.Match("www."))) { StringBuilder lb = new StringBuilder(); string url; // едим все до пробела, или до конца строки do { if (Char.IsWhiteSpace(_input.Current)) { _input.Position--; break; } lb.Append(_input.Current); } while (_input.Read()); // отдаем обратно не буквы-цифры и слеши while (lb.Length > 0 && Char.IsPunctuation(lb[lb.Length - 1])) { lb.Length--; _input.Position--; } url = (lb[0] == 'w') ? "http://" + lb.ToString() : lb.ToString(); Uri uri; if (Uri.TryCreate(url, UriKind.Absolute, out uri)) { if (String.Equals(uri.Scheme, "mailto", StringComparison.OrdinalIgnoreCase)) lb.Remove(0, 7); HtmlElementBuilder tag = new HtmlElementBuilder("a"); tag.Attributes["href"] = uri.OriginalString; tag.InnerHtml = SecurityElement.Escape(lb.ToString()); Write(FormatElement(tag, HtmlElementRenderMode.Normal)); } else _output.Append(lb.ToString()); } else if (Char.IsWhiteSpace(ch)) { CloseNoBreak(); Write(ch); } else Write(ch); }
protected virtual string FormatElement(HtmlElementBuilder element, HtmlElementRenderMode mode) { Precondition.Require(element, () => Error.ArgumentNull("element")); if (Formatter == null) return element.ToString(mode); return Formatter(element, mode); }