You've already forked linux-packaging-mono
Imported Upstream version 4.6.0.125
Former-commit-id: a2155e9bd80020e49e72e86c44da02a8ac0e57a4
This commit is contained in:
parent
a569aebcfd
commit
e79aa3c0ed
@ -0,0 +1,181 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <copyright file="HtmlContainerControl.cs" company="Microsoft">
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// </copyright>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace System.Web.UI.HtmlControls {
|
||||
using System.Runtime.Serialization.Formatters;
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.ComponentModel;
|
||||
using System.IO;
|
||||
using System.Web.UI;
|
||||
using System.Security.Permissions;
|
||||
|
||||
/*
|
||||
* A control representing an intrinsic Html tag.
|
||||
*/
|
||||
|
||||
/// <devdoc>
|
||||
/// <para>The <see langword='HtmlContainerControl'/>
|
||||
/// class defines the methods,
|
||||
/// properties and events
|
||||
/// available to all Html Server controls that must have a
|
||||
/// closing tag.</para>
|
||||
/// </devdoc>
|
||||
abstract public class HtmlContainerControl : HtmlControl {
|
||||
/*
|
||||
* Creates a new WebControl
|
||||
*/
|
||||
|
||||
/// <devdoc>
|
||||
/// <para>Initializes a new instance of a <see cref='System.Web.UI.HtmlControls.HtmlContainerControl'/> class using
|
||||
/// default values.</para>
|
||||
/// </devdoc>
|
||||
protected HtmlContainerControl() : this("span") {
|
||||
}
|
||||
|
||||
/*
|
||||
* Creates a new HtmlContainerControl
|
||||
*/
|
||||
|
||||
/// <devdoc>
|
||||
/// <para>Initializes a new instance of a <see cref='System.Web.UI.HtmlControls.HtmlContainerControl'/> class using the
|
||||
/// specified string.</para>
|
||||
/// </devdoc>
|
||||
public HtmlContainerControl(string tag) : base(tag) {
|
||||
}
|
||||
|
||||
/*
|
||||
* The inner html content between the begin and end tag.
|
||||
* A set will replace any existing child controls with a single literal.
|
||||
* A get will return the text of a single literal child OR
|
||||
* will throw an exception if there are no children, more than one
|
||||
* child, or the single child is not a literal.
|
||||
*/
|
||||
|
||||
/// <devdoc>
|
||||
/// <para>
|
||||
/// Gets or sets the
|
||||
/// content found between the opening and closing tags of the specified HTML server control.
|
||||
/// </para>
|
||||
/// </devdoc>
|
||||
[
|
||||
Browsable(false),
|
||||
DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden),
|
||||
HtmlControlPersistable(false),
|
||||
]
|
||||
public virtual string InnerHtml {
|
||||
get {
|
||||
if (IsLiteralContent())
|
||||
return((LiteralControl) Controls[0]).Text;
|
||||
else if (HasControls() && (Controls.Count == 1) && Controls[0] is DataBoundLiteralControl)
|
||||
return ((DataBoundLiteralControl) Controls[0]).Text;
|
||||
else {
|
||||
if (Controls.Count == 0)
|
||||
return String.Empty;
|
||||
|
||||
throw new HttpException(SR.GetString(SR.Inner_Content_not_literal, ID));
|
||||
}
|
||||
}
|
||||
|
||||
set {
|
||||
Controls.Clear();
|
||||
Controls.Add(new LiteralControl(value));
|
||||
ViewState["innerhtml"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* The inner text content between the begin and end tag.
|
||||
* A set will replace any existing child controls with a single literal.
|
||||
* A get will return the text of a single literal child OR
|
||||
* will throw an exception if there are no children, more than one child, or
|
||||
* the single child is not a literal.
|
||||
*/
|
||||
|
||||
/// <devdoc>
|
||||
/// <para>
|
||||
/// Gets or sets all text between the opening and closing tags
|
||||
/// of the specified HTML server control.
|
||||
/// </para>
|
||||
/// </devdoc>
|
||||
[
|
||||
Browsable(false),
|
||||
DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden),
|
||||
HtmlControlPersistable(false),
|
||||
]
|
||||
public virtual string InnerText {
|
||||
get {
|
||||
return HttpUtility.HtmlDecode(InnerHtml);
|
||||
}
|
||||
|
||||
set {
|
||||
InnerHtml = HttpUtility.HtmlEncode(value);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/// <devdoc>
|
||||
/// <para>[To be supplied.]</para>
|
||||
/// </devdoc>
|
||||
protected override ControlCollection CreateControlCollection() {
|
||||
return new ControlCollection(this);
|
||||
}
|
||||
|
||||
|
||||
/// <internalonly/>
|
||||
/// <devdoc>
|
||||
/// </devdoc>
|
||||
protected override void LoadViewState(object savedState) {
|
||||
if (savedState != null) {
|
||||
base.LoadViewState(savedState);
|
||||
string s = (string)ViewState["innerhtml"];
|
||||
// Dev10 703061 If InnerHtml is set, we want to clear out any child controls, but not dirty viewstate
|
||||
if (s != null) {
|
||||
Controls.Clear();
|
||||
Controls.Add(new LiteralControl(s));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Render the control into the given writer.
|
||||
*/
|
||||
|
||||
/// <internalonly/>
|
||||
/// <devdoc>
|
||||
/// </devdoc>
|
||||
protected internal override void Render(HtmlTextWriter writer) {
|
||||
RenderBeginTag(writer);
|
||||
RenderChildren(writer);
|
||||
RenderEndTag(writer);
|
||||
}
|
||||
|
||||
/*
|
||||
* Override to prevent InnerHtml from being rendered as an attribute.
|
||||
*/
|
||||
|
||||
/// <internalonly/>
|
||||
/// <devdoc>
|
||||
/// </devdoc>
|
||||
protected override void RenderAttributes(HtmlTextWriter writer) {
|
||||
ViewState.Remove("innerhtml");
|
||||
base.RenderAttributes(writer);
|
||||
}
|
||||
|
||||
/*
|
||||
* Render the end tag, </TAGNAME>.
|
||||
*/
|
||||
|
||||
/// <internalonly/>
|
||||
/// <devdoc>
|
||||
/// </devdoc>
|
||||
protected virtual void RenderEndTag(HtmlTextWriter writer) {
|
||||
writer.WriteEndTag(TagName);
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user