Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / xsp / System / Web / Compilation / RouteUrlExpressionBuilder.cs / 1305376 / RouteUrlExpressionBuilder.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.CodeAnalysis; using System.Web.UI; using System.Web.Routing; using System.Collections.Generic; [ExpressionPrefix("Routes")] [ExpressionEditor("System.Web.UI.Design.RouteUrlExpressionEditor, " + AssemblyRef.SystemDesign)] public class RouteUrlExpressionBuilder : 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()), "GetRouteUrl", new CodeThisReferenceExpression(), new CodePrimitiveExpression(entry.Expression.Trim())); } public override object EvaluateExpression(object target, BoundPropertyEntry entry, object parsedData, ExpressionBuilderContext context) { return GetRouteUrl(context.TemplateControl, entry.Expression.Trim()); } public static bool TryParseRouteExpression(string expression, RouteValueDictionary routeValues, out string routeName) { routeName = null; if (String.IsNullOrEmpty(expression)) return false; string[] pieces = expression.Split(new char[] { ',' }); foreach (string piece in pieces) { string[] subs = piece.Split(new char[] { '=' }); // Make sure we have exactly= if (subs.Length != 2) { return false; } string key = subs[0].Trim(); string value = subs[1].Trim(); if (string.IsNullOrEmpty(key)) { return false; } if (key.Equals("RouteName", StringComparison.OrdinalIgnoreCase)) { routeName = value; } else { routeValues[key] = value; } } return true; } [SuppressMessage("Microsoft.Design", "CA1055", Justification = "Consistent with other URL properties in ASP.NET.")] // Format will be <%$ ExpPrefix: RouteName = , Key=Value, Key2=Value2 %> public static string GetRouteUrl(Control control, string expression) { if (control == null) { throw new ArgumentNullException("control"); } string routeName = null; RouteValueDictionary routeParams = new RouteValueDictionary(); if (TryParseRouteExpression(expression, routeParams, out routeName)) { return control.GetRouteUrl(routeName, routeParams); } else { throw new InvalidOperationException(SR.GetString(SR.RouteUrlExpression_InvalidExpression)); } } } } // 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
- FontSizeConverter.cs
- StringAnimationUsingKeyFrames.cs
- ExpressionVisitorHelpers.cs
- Transform.cs
- NavigationCommands.cs
- ChangeTracker.cs
- JsonQueryStringConverter.cs
- HttpSessionStateWrapper.cs
- HierarchicalDataSourceConverter.cs
- PopupEventArgs.cs
- MessageTraceRecord.cs
- TypeUnloadedException.cs
- DocumentViewerBase.cs
- GPPOINTF.cs
- HostedImpersonationContext.cs
- EdmToObjectNamespaceMap.cs
- CodeSnippetExpression.cs
- EditableTreeList.cs
- FontConverter.cs
- MetadataPropertyAttribute.cs
- CompatibleIComparer.cs
- StringUtil.cs
- XmlConvert.cs
- CodeSubDirectory.cs
- Table.cs
- EraserBehavior.cs
- ProxyManager.cs
- AvTrace.cs
- BindingMemberInfo.cs
- WebPartEditorApplyVerb.cs
- HttpProfileGroupBase.cs
- TreeNodeStyleCollection.cs
- ScrollViewerAutomationPeer.cs
- ChineseLunisolarCalendar.cs
- PageParser.cs
- ExecutorLocksHeldException.cs
- MembershipValidatePasswordEventArgs.cs
- WorkflowRuntimeSection.cs
- BindingElementExtensionElement.cs
- GlyphInfoList.cs
- MultipartContentParser.cs
- IMembershipProvider.cs
- AutomationPatternInfo.cs
- ClientOptions.cs
- MostlySingletonList.cs
- BamlRecordWriter.cs
- WebPartsPersonalizationAuthorization.cs
- SizeConverter.cs
- PriorityItem.cs
- DNS.cs
- CodeExpressionCollection.cs
- TemplateEditingService.cs
- TableParagraph.cs
- BitVector32.cs
- NumberSubstitution.cs
- ScopelessEnumAttribute.cs
- ThreadSafeList.cs
- BitConverter.cs
- ParseHttpDate.cs
- MessageBox.cs
- XmlAttributeOverrides.cs
- ListDataHelper.cs
- TranslateTransform.cs
- CodeChecksumPragma.cs
- ContainerAction.cs
- Property.cs
- PackageStore.cs
- ArrangedElementCollection.cs
- GenericEnumConverter.cs
- BitmapEffectInputData.cs
- SecurityElement.cs
- ConstructorArgumentAttribute.cs
- EntityCommandCompilationException.cs
- TeredoHelper.cs
- DependencyObjectPropertyDescriptor.cs
- DesignTimeVisibleAttribute.cs
- WebControlsSection.cs
- CurrencyManager.cs
- XPathScanner.cs
- HtmlInputCheckBox.cs
- ReaderWriterLockWrapper.cs
- DesignerVerb.cs
- VerificationException.cs
- Inline.cs
- GeneratedContractType.cs
- FieldValue.cs
- TargetInvocationException.cs
- SQLResource.cs
- ProvidePropertyAttribute.cs
- ToolBarButtonClickEvent.cs
- IERequestCache.cs
- ICspAsymmetricAlgorithm.cs
- PolyLineSegment.cs
- KeyToListMap.cs
- Send.cs
- WhiteSpaceTrimStringConverter.cs
- UiaCoreProviderApi.cs
- ReadOnlyAttribute.cs
- MediaTimeline.cs
- CodeTypeReference.cs