UrlPager source code - RouteValuesExpressionBuilder.cs
/*
ASP.NET UrlPager control
Copyright:2009-2010 Webdiyer (http://www.webdiyer.com)
Source code released under Ms-PL license
*/
using System;
using System.CodeDom;
using System.ComponentModel;
using System.Web.Compilation;
using System.Web.Routing;
using System.Web.UI;
namespace Webdiyer.WebControls {
[ExpressionPrefix("RouteValues")]
public class RouteValuesExpressionBuilder : ExpressionBuilder
{
public override CodeExpression GetCodeExpression(BoundPropertyEntry entry, object parsedData,
ExpressionBuilderContext context)
{
Type type = entry.DeclaringType;
PropertyDescriptor descriptor =
TypeDescriptor.GetProperties(type)
[entry.PropertyInfo.Name];
CodeExpression[] expressionArray =
new CodeExpression[3];
expressionArray[0] = new
CodePrimitiveExpression(entry.Expression.Trim());
expressionArray[1] = new
CodeTypeOfExpression(type);
expressionArray[2] = new
CodePrimitiveExpression(entry.Name);
return new CodeCastExpression(descriptor.PropertyType
, new CodeMethodInvokeExpression(
new CodeTypeReferenceExpression(GetType())
, "GetRouteValues"
, expressionArray));
}
public static object GetRouteValues(string expression, Type target, string entry)
{
var values = new RouteValueDictionary();
string[] rarr = expression.Split(',');
foreach(string s in rarr)
{
string[] varr = s.Trim().Split('=');
if(varr.Length==2)
values.Add(varr[0].Trim(), varr[1].Trim(new char[]{'\"','\'',' '}));
}
return values;
}
}
}