Code:
/ FXUpdate3074 / FXUpdate3074 / 1.1 / untmp / whidbey / QFE / ndp / fx / src / xsp / System / Web / UI / AttributeCollection.cs / 1 / AttributeCollection.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
/*
* AttributeCollection.cs
*
* Copyright (c) 2000 Microsoft Corporation
*/
namespace System.Web.UI {
using System.IO;
using System.Collections;
using System.Reflection;
using System.Web.UI;
using System.Globalization;
using System.Security.Permissions;
using System.Web.Util;
/*
* The AttributeCollection represents Attributes on an Html control.
*/
///
///
/// The class provides object-model access
/// to all attributes declared on an HTML server control element.
///
///
[AspNetHostingPermission(SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)]
public sealed class AttributeCollection {
private StateBag _bag;
private CssStyleCollection _styleColl;
/*
* Constructs an AttributeCollection given a StateBag.
*/
///
///
public AttributeCollection(StateBag bag) {
_bag = bag;
}
/*
* Automatically adds new keys.
*/
///
///
/// Gets or sets a specified attribute value.
///
///
public string this[string key]
{
get {
if (_styleColl != null && StringUtil.EqualsIgnoreCase(key, "style"))
return _styleColl.Value;
else
return _bag[key] as string;
}
set {
Add(key, value);
}
}
/*
* Returns a collection of keys.
*/
///
///
/// Gets a collection of keys to all the attributes in the
/// .
///
///
public ICollection Keys {
get {
return _bag.Keys;
}
}
///
///
/// Gets the number of items in the .
///
///
public int Count {
get {
return _bag.Count;
}
}
///
///
public CssStyleCollection CssStyle {
get {
if (_styleColl == null) {
_styleColl = new CssStyleCollection(_bag);
}
return _styleColl;
}
}
///
///
/// Adds an item to the .
///
///
public void Add(string key, string value) {
if (_styleColl != null && StringUtil.EqualsIgnoreCase(key, "style"))
_styleColl.Value = value;
else
_bag[key] = value;
}
public override bool Equals(object o) {
// This implementation of Equals relies on mutable properties and is therefore broken,
// but we shipped it this way in V1 so it will be a breaking change to fix it.
AttributeCollection attrs = o as AttributeCollection;
if (attrs != null) {
if (attrs.Count != _bag.Count) {
return false;
}
foreach (DictionaryEntry attr in _bag) {
if (this[(string)attr.Key] != attrs[(string)attr.Key]) {
return false;
}
}
return true;
}
return false;
}
public override int GetHashCode() {
// This implementation of GetHashCode uses mutable properties but matches the V1 implementation
// of Equals.
HashCodeCombiner hashCodeCombiner = new HashCodeCombiner();
foreach (DictionaryEntry attr in _bag) {
hashCodeCombiner.AddObject(attr.Key);
hashCodeCombiner.AddObject(attr.Value);
}
return hashCodeCombiner.CombinedHash32;
}
///
///
/// Removes an attribute from the .
///
///
public void Remove(string key) {
if (_styleColl != null && StringUtil.EqualsIgnoreCase(key, "style"))
_styleColl.Clear();
else
_bag.Remove(key);
}
///
///
/// Removes all attributes from the .
///
///
public void Clear() {
_bag.Clear();
if (_styleColl != null)
_styleColl.Clear();
}
///
/// [To be supplied.]
///
public void Render(HtmlTextWriter writer) {
if (_bag.Count > 0) {
IDictionaryEnumerator e = _bag.GetEnumerator();
while (e.MoveNext()) {
StateItem item = e.Value as StateItem;
if (item != null) {
string value = item.Value as string;
string key = e.Key as string;
if (key != null && value != null) {
writer.WriteAttribute(key, value, true /*fEncode*/);
}
}
}
}
}
///
/// [To be supplied.]
///
public void AddAttributes(HtmlTextWriter writer) {
if (_bag.Count > 0) {
IDictionaryEnumerator e = _bag.GetEnumerator();
while (e.MoveNext()) {
StateItem item = e.Value as StateItem;
if (item != null) {
string value = item.Value as string;
string key = e.Key as string;
if (key != null && value != null) {
writer.AddAttribute(key, value, true /*fEncode*/);
}
}
}
}
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- DataGridViewRowHeaderCell.cs
- XmlFormatExtensionPrefixAttribute.cs
- XmlImplementation.cs
- ServiceContractViewControl.Designer.cs
- InProcStateClientManager.cs
- BufferBuilder.cs
- WindowsToolbarAsMenu.cs
- Visual.cs
- HiddenFieldPageStatePersister.cs
- CompositeActivityMarkupSerializer.cs
- MobileControlsSection.cs
- HtmlControl.cs
- Calendar.cs
- AmbientProperties.cs
- SafeHandles.cs
- DecimalConverter.cs
- TypedReference.cs
- DataSourceXmlSerializationAttribute.cs
- RtType.cs
- VariableExpressionConverter.cs
- DataGridCheckBoxColumn.cs
- ReadOnlyObservableCollection.cs
- ManagedIStream.cs
- XmlObjectSerializerWriteContextComplexJson.cs
- util.cs
- CodeBinaryOperatorExpression.cs
- PenLineJoinValidation.cs
- DataGridDefaultColumnWidthTypeConverter.cs
- BindToObject.cs
- ClientSideQueueItem.cs
- RsaKeyIdentifierClause.cs
- RegexCaptureCollection.cs
- FrameworkContentElement.cs
- Pts.cs
- CapabilitiesRule.cs
- ModuleConfigurationInfo.cs
- ParamArrayAttribute.cs
- SoapElementAttribute.cs
- SelectionGlyph.cs
- EdgeModeValidation.cs
- RegisteredDisposeScript.cs
- TitleStyle.cs
- LinkClickEvent.cs
- PrePostDescendentsWalker.cs
- EdmComplexPropertyAttribute.cs
- SqlRewriteScalarSubqueries.cs
- UIPermission.cs
- WrappingXamlSchemaContext.cs
- Operand.cs
- SHA1.cs
- AvTrace.cs
- Options.cs
- CreateRefExpr.cs
- Completion.cs
- XmlTextReaderImplHelpers.cs
- MailDefinition.cs
- _SpnDictionary.cs
- SQLDouble.cs
- CodeTypeDeclaration.cs
- StructuralObject.cs
- LogEntryUtils.cs
- Int64Converter.cs
- HwndProxyElementProvider.cs
- BitmapEffectGroup.cs
- RuleSetBrowserDialog.cs
- ElementHostPropertyMap.cs
- oledbconnectionstring.cs
- ProviderCollection.cs
- ObjectHelper.cs
- ObjectView.cs
- LambdaCompiler.Expressions.cs
- SystemInfo.cs
- AnnotationAdorner.cs
- Filter.cs
- ToolboxBitmapAttribute.cs
- LabelAutomationPeer.cs
- BitmapFrameEncode.cs
- SqlNodeAnnotations.cs
- AdjustableArrowCap.cs
- NativeMethods.cs
- SemanticBasicElement.cs
- EmptyStringExpandableObjectConverter.cs
- xml.cs
- DbParameterHelper.cs
- HostingEnvironmentSection.cs
- KeyPressEvent.cs
- DeferredElementTreeState.cs
- AttachedPropertyMethodSelector.cs
- KeyValuePair.cs
- WmlTextBoxAdapter.cs
- ParserOptions.cs
- ToolStripItemClickedEventArgs.cs
- ProcessHostServerConfig.cs
- TypeUtil.cs
- InternalSafeNativeMethods.cs
- DynamicAttribute.cs
- MbpInfo.cs
- DbConnectionPool.cs
- SoapIgnoreAttribute.cs
- DesignTable.cs