Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / xsp / System / Web / Compilation / RouteValueExpressionBuilder.cs / 1305376 / RouteValueExpressionBuilder.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Web.Compilation { using System; using System.Security.Permissions; using System.CodeDom; using System.ComponentModel; using System.Configuration; using System.Diagnostics; using System.Web.UI; using System.Web.Routing; using System.Collections.Generic; [ExpressionPrefix("Routes")] [ExpressionEditor("System.Web.UI.Design.RouteValueExpressionEditor, " + AssemblyRef.SystemDesign)] public class RouteValueExpressionBuilder : ExpressionBuilder { public override bool SupportsEvaluate { get { return true; } } public override CodeExpression GetCodeExpression(BoundPropertyEntry entry, object parsedData, ExpressionBuilderContext context) { return new CodeMethodInvokeExpression( new CodeTypeReferenceExpression(this.GetType()), "GetRouteValue", new CodePropertyReferenceExpression(new CodeThisReferenceExpression(), "Page"), new CodePrimitiveExpression(entry.Expression.Trim()), new CodeTypeOfExpression(new CodeTypeReference(entry.ControlType)), new CodePrimitiveExpression(entry.Name) ); } public override object EvaluateExpression(object target, BoundPropertyEntry entry, object parsedData, ExpressionBuilderContext context) { // Target should always be a control Control control = target as Control; if (control == null) return null; return GetRouteValue(context.TemplateControl.Page, entry.Expression.Trim(), entry.ControlType, entry.Name); } internal static object ConvertRouteValue(object value, Type controlType, string propertyName) { // Try to do any type converting necessary for the property set if (controlType != null && !String.IsNullOrEmpty(propertyName)) { PropertyDescriptor propDesc = TypeDescriptor.GetProperties(controlType)[propertyName]; if (propDesc != null) { if (propDesc.PropertyType != typeof(string)) { TypeConverter converter = propDesc.Converter; if (converter.CanConvertFrom(typeof(string))) { return converter.ConvertFrom(value); } } } } return value; } // Format will be <%$ RouteValue: Key %>, controlType,propertyName are used to figure out what typeconverter to use public static object GetRouteValue(Page page, string key, Type controlType, string propertyName) { if (page == null || String.IsNullOrEmpty(key) || page.RouteData == null) { return null; } return ConvertRouteValue(page.RouteData.Values[key], controlType, propertyName); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- CryptoConfig.cs
- WindowsTokenRoleProvider.cs
- SqlClientMetaDataCollectionNames.cs
- SystemIPInterfaceStatistics.cs
- RawStylusActions.cs
- WebPartDisplayModeCollection.cs
- RequestTimeoutManager.cs
- CoreSwitches.cs
- Link.cs
- PassportAuthenticationEventArgs.cs
- PersonalizableTypeEntry.cs
- XsdSchemaFileEditor.cs
- CacheModeValueSerializer.cs
- DataSetUtil.cs
- BaseCollection.cs
- TableDetailsCollection.cs
- TextEditorMouse.cs
- ExtensibleClassFactory.cs
- OleDbDataReader.cs
- GeneralTransformGroup.cs
- EditingMode.cs
- XamlWriter.cs
- TransformerInfo.cs
- ContentPlaceHolder.cs
- SerializationIncompleteException.cs
- XPathArrayIterator.cs
- StatusBarDrawItemEvent.cs
- AssemblySettingAttributes.cs
- EntityStoreSchemaGenerator.cs
- Stack.cs
- RemoteWebConfigurationHostServer.cs
- DbProviderManifest.cs
- SR.cs
- XmlAtomicValue.cs
- PointF.cs
- FileRecordSequence.cs
- FileVersion.cs
- ObjectStateManager.cs
- CannotUnloadAppDomainException.cs
- SqlFormatter.cs
- ModuleElement.cs
- HandleValueEditor.cs
- SmiMetaData.cs
- FormViewAutoFormat.cs
- AssemblyAttributes.cs
- LoginView.cs
- PackagePartCollection.cs
- CollectionType.cs
- MobilePage.cs
- DesignerSelectionListAdapter.cs
- EntityDataSourceWrapperPropertyDescriptor.cs
- DoubleAnimationUsingPath.cs
- SharedStream.cs
- RegexCode.cs
- PropertyRef.cs
- WebPartEditVerb.cs
- ReferentialConstraintRoleElement.cs
- XmlHierarchyData.cs
- SiteMapDesignerDataSourceView.cs
- ConfigXmlDocument.cs
- ApplicationDirectory.cs
- SslStream.cs
- DataRowCollection.cs
- XmlSchemaRedefine.cs
- MexBindingBindingCollectionElement.cs
- CreateRefExpr.cs
- HwndProxyElementProvider.cs
- InfoCardSymmetricCrypto.cs
- BinHexDecoder.cs
- PointLight.cs
- HostingPreferredMapPath.cs
- PagesSection.cs
- SystemResources.cs
- FixedSOMLineCollection.cs
- Int32.cs
- SmiXetterAccessMap.cs
- RadioButtonRenderer.cs
- GPPOINTF.cs
- EditorAttribute.cs
- MethodCallExpression.cs
- BehaviorEditorPart.cs
- ViewValidator.cs
- DataServiceBuildProvider.cs
- UIInitializationException.cs
- COM2ICategorizePropertiesHandler.cs
- EpmSourceTree.cs
- GeometryCombineModeValidation.cs
- Oid.cs
- TcpProcessProtocolHandler.cs
- SoapSchemaMember.cs
- ElementProxy.cs
- PreloadHost.cs
- PublisherIdentityPermission.cs
- ZoneMembershipCondition.cs
- ToolBarButtonClickEvent.cs
- SharedPersonalizationStateInfo.cs
- NonBatchDirectoryCompiler.cs
- BridgeDataReader.cs
- TimeZone.cs
- EntityStoreSchemaGenerator.cs