rendered paste bodyIndex: System.Web.Configuration_2.0/TagMapInfo.cs
===================================================================
--- System.Web.Configuration_2.0/TagMapInfo.cs (revision 69863)
+++ System.Web.Configuration_2.0/TagMapInfo.cs (working copy)
@@ -60,6 +60,10 @@
properties.Add (tagTypeProp);
}
+ internal TagMapInfo ()
+ {
+ }
+
public TagMapInfo (string tagTypeName, string mappedTagTypeName)
{
this.TagType = tagTypeName;
Index: System.Web.Configuration_2.0/TagMapCollection.cs
===================================================================
--- System.Web.Configuration_2.0/TagMapCollection.cs (revision 69863)
+++ System.Web.Configuration_2.0/TagMapCollection.cs (working copy)
@@ -62,7 +62,7 @@
protected override ConfigurationElement CreateNewElement ()
{
- return new TagMapInfo ("", "");
+ return new TagMapInfo ();
}
protected override object GetElementKey (ConfigurationElement element)
Index: System.Web.UI/ControlBuilder.cs
===================================================================
--- System.Web.UI/ControlBuilder.cs (revision 69863)
+++ System.Web.UI/ControlBuilder.cs (working copy)
@@ -33,6 +33,7 @@
using System.Reflection;
using System.Security.Permissions;
using System.Web.Compilation;
+using System.Web.Configuration;
namespace System.Web.UI {
@@ -298,6 +299,33 @@
{
}
+#if NET_2_0
+ static Type MapTagType (Type tagType)
+ {
+ if (tagType == null)
+ return null;
+
+ PagesSection ps = WebConfigurationManager.GetSection ("system.web/pages") as PagesSection;
+ if (ps == null)
+ return tagType;
+
+ TagMapCollection tags = ps.TagMapping;
+ if (tags == null || tags.Count == 0)
+ return tagType;
+ string tagTypeName = tagType.ToString ();
+ foreach (TagMapInfo tmi in tags)
+ if (tmi.TagType == tagTypeName) {
+ try {
+ return Type.GetType (tmi.MappedTagType, true);
+ } catch (Exception ex) {
+ throw new HttpException (String.Format ("Unable to map tag type {0}", tagTypeName),
+ ex);
+ }
+ }
+ return tagType;
+ }
+#endif
+
public static ControlBuilder CreateBuilderFromType (TemplateParser parser,
ControlBuilder parentBuilder,
Type type,
@@ -307,8 +335,15 @@
int line,
string sourceFileName)
{
+
+ Type tagType;
+#if NET_2_0
+ tagType = MapTagType (type);
+#else
+ tagType = type;
+#endif
ControlBuilder builder;
- object [] atts = type.GetCustomAttributes (typeof (ControlBuilderAttribute), true);
+ object [] atts = tagType.GetCustomAttributes (typeof (ControlBuilderAttribute), true);
if (atts != null && atts.Length > 0) {
ControlBuilderAttribute att = (ControlBuilderAttribute) atts [0];
builder = (ControlBuilder) Activator.CreateInstance (att.BuilderType);
@@ -316,7 +351,7 @@
builder = new ControlBuilder ();
}
- builder.Init (parser, parentBuilder, type, tagName, id, attribs);
+ builder.Init (parser, parentBuilder, tagType, tagName, id, attribs);
builder.line = line;
builder.fileName = sourceFileName;
return builder;