public MainDirectiveAttribute(string value) { this.unparsedValue = value; if (value != null) { this.isExpression = BaseParser.IsExpression(value); } }
internal override void ProcessMainAttributes (IDictionary atts) { // note: the 'enableSessionState' configuration property is // processed in a case-sensitive manner while the page-level // attribute is processed case-insensitive string enabless = GetString (atts, "EnableSessionState", null); if (enabless != null) { if (String.Compare (enabless, "readonly", true, Helpers.InvariantCulture) == 0) enableSessionState = PagesEnableSessionState.ReadOnly; else if (String.Compare (enabless, "true", true, Helpers.InvariantCulture) == 0) enableSessionState = PagesEnableSessionState.True; else if (String.Compare (enabless, "false", true, Helpers.InvariantCulture) == 0) enableSessionState = PagesEnableSessionState.False; else ThrowParseException ("Invalid value for enableSessionState: " + enabless); } string value = GetString (atts, "CodePage", null); if (value != null) { if (responseEncoding != null) ThrowParseException ("CodePage and ResponseEncoding are mutually exclusive."); #if NET_2_0 if (!BaseParser.IsExpression (value)) { #endif int cpval = -1; try { cpval = (int) UInt32.Parse (value); } catch { ThrowParseException ("Invalid value for CodePage: " + value); } try { Encoding.GetEncoding (cpval); } catch { ThrowParseException ("Unsupported codepage: " + value); } #if NET_2_0 codepage = new MainDirectiveAttribute <int> (cpval, true); #else codepage = new MainDirectiveAttribute (cpval); #endif #if NET_2_0 } else codepage = new MainDirectiveAttribute <int> (value); #endif } value = GetString (atts, "ResponseEncoding", null); if (value != null) { if (codepage != null) ThrowParseException ("CodePage and ResponseEncoding are mutually exclusive."); #if NET_2_0 if (!BaseParser.IsExpression (value)) { #endif try { Encoding.GetEncoding (value); } catch { ThrowParseException ("Unsupported encoding: " + value); } #if NET_2_0 responseEncoding = new MainDirectiveAttribute <string> (value, true); #else responseEncoding = new MainDirectiveAttribute (value); #endif #if NET_2_0 } else responseEncoding = new MainDirectiveAttribute <string> (value); #endif } contentType = GetString (atts, "ContentType", null); value = GetString (atts, "LCID", null); if (value != null) { #if NET_2_0 if (!BaseParser.IsExpression (value)) { #endif int parsedLcid = -1; try { parsedLcid = (int) UInt32.Parse (value); } catch { ThrowParseException ("Invalid value for LCID: " + value); } CultureInfo ci = null; try { ci = new CultureInfo (parsedLcid); } catch { ThrowParseException ("Unsupported LCID: " + value); } if (ci.IsNeutralCulture) { string suggestedCulture = SuggestCulture (ci.Name); string fmt = "LCID attribute must be set to a non-neutral Culture."; if (suggestedCulture != null) { ThrowParseException (fmt + " Please try one of these: " + suggestedCulture); } else { ThrowParseException (fmt); } } #if NET_2_0 lcid = new MainDirectiveAttribute <int> (parsedLcid, true); #else lcid = new MainDirectiveAttribute (parsedLcid); #endif #if NET_2_0 } else lcid = new MainDirectiveAttribute <int> (value); #endif } culture = GetString (atts, "Culture", null); if (culture != null) { if (lcid != null) ThrowParseException ("Culture and LCID are mutually exclusive."); CultureInfo ci = null; try { #if NET_2_0 if (!culture.StartsWith ("auto")) #endif ci = new CultureInfo (culture); } catch { ThrowParseException ("Unsupported Culture: " + culture); } if (ci != null && ci.IsNeutralCulture) { string suggestedCulture = SuggestCulture (culture); string fmt = "Culture attribute must be set to a non-neutral Culture."; if (suggestedCulture != null) ThrowParseException (fmt + " Please try one of these: " + suggestedCulture); else ThrowParseException (fmt); } } uiculture = GetString (atts, "UICulture", null); if (uiculture != null) { CultureInfo ci = null; try { #if NET_2_0 if (!uiculture.StartsWith ("auto")) #endif ci = new CultureInfo (uiculture); } catch { ThrowParseException ("Unsupported Culture: " + uiculture); } if (ci != null && ci.IsNeutralCulture) { string suggestedCulture = SuggestCulture (uiculture); string fmt = "UICulture attribute must be set to a non-neutral Culture."; if (suggestedCulture != null) ThrowParseException (fmt + " Please try one of these: " + suggestedCulture); else ThrowParseException (fmt); } } string tracestr = GetString (atts, "Trace", null); if (tracestr != null) { haveTrace = true; atts ["Trace"] = tracestr; trace = GetBool (atts, "Trace", false); } string tracemodes = GetString (atts, "TraceMode", null); if (tracemodes != null) { bool valid = true; try { tracemode = (TraceMode) Enum.Parse (typeof (TraceMode), tracemodes, false); } catch { valid = false; } if (!valid || tracemode == TraceMode.Default) ThrowParseException ("The 'tracemode' attribute is case sensitive and must be " + "one of the following values: SortByTime, SortByCategory."); } errorPage = GetString (atts, "ErrorPage", null); validateRequest = GetBool (atts, "ValidateRequest", validateRequest); value = GetString (atts, "ClientTarget", null); if (value != null) { #if NET_2_0 if (!BaseParser.IsExpression (value)) { value = value.Trim (); ClientTargetSection sec = GetConfigSection <ClientTargetSection> ("system.web/clientTarget"); ClientTarget ct = null; if ((ct = sec.ClientTargets [value]) == null) value = value.ToLowerInvariant (); if (ct == null && (ct = sec.ClientTargets [value]) == null) { ThrowParseException (String.Format ( "ClientTarget '{0}' is an invalid alias. See the " + "documentation for <clientTarget> config. section.", clientTarget)); } value = ct.UserAgent; clientTarget = new MainDirectiveAttribute <string> (value, true); #else NameValueCollection coll; coll = (NameValueCollection) HttpContext.GetAppConfig ("system.web/clientTarget"); object ct = null; if (coll != null) { ct = coll [value]; if (ct == null) ct = coll [value.ToLower (Helpers.InvariantCulture)]; } if (ct == null) { ThrowParseException (String.Format ( "ClientTarget '{0}' is an invalid alias. See the " + "documentation for <clientTarget> config. section.", clientTarget)); } clientTarget = new MainDirectiveAttribute (ct); #endif #if NET_2_0 } else { clientTarget = new MainDirectiveAttribute <string> (value); } #endif } notBuffer = !GetBool (atts, "Buffer", true); #if NET_2_0 async = GetBool (atts, "Async", false); string asyncTimeoutVal = GetString (atts, "AsyncTimeout", null); if (asyncTimeoutVal != null) { try { asyncTimeout = Int32.Parse (asyncTimeoutVal); } catch (Exception) { ThrowParseException ("AsyncTimeout must be an integer value"); } } value = GetString (atts, "MasterPageFile", masterPage != null ? masterPage.Value : null); if (!String.IsNullOrEmpty (value)) { if (!BaseParser.IsExpression (value)) { if (!HostingEnvironment.VirtualPathProvider.FileExists (value)) ThrowParseFileNotFound (value); AddDependency (value); masterPage = new MainDirectiveAttribute <string> (value, true); } else masterPage = new MainDirectiveAttribute <string> (value); } value = GetString(atts, "Title", null); if (value != null) { if (!BaseParser.IsExpression (value)) title = new MainDirectiveAttribute <string> (value, true); else title = new MainDirectiveAttribute <string> (value); } value = GetString (atts, "Theme", theme != null ? theme.Value : null); if (value != null) { if (!BaseParser.IsExpression (value)) theme = new MainDirectiveAttribute <string> (value, true); else theme = new MainDirectiveAttribute <string> (value); } styleSheetTheme = GetString (atts, "StyleSheetTheme", styleSheetTheme); enable_event_validation = GetBool (atts, "EnableEventValidation", enable_event_validation); maintainScrollPositionOnPostBack = GetBool (atts, "MaintainScrollPositionOnPostBack", maintainScrollPositionOnPostBack); #endif if (atts.Contains ("EnableViewStateMac")) { enableViewStateMac = GetBool (atts, "EnableViewStateMac", enableViewStateMac); enableViewStateMacSet = true; } // Ignored by now GetString (atts, "SmartNavigation", null); base.ProcessMainAttributes (atts); }