protected override void RenderAttributes(HtmlTextWriter writer) { ArrayList list = new ArrayList(); foreach (string str in base.Attributes.Keys) { if (!writer.IsValidFormAttribute(str)) { list.Add(str); } } foreach (string str2 in list) { base.Attributes.Remove(str2); } bool enableLegacyRendering = base.EnableLegacyRendering; Page page = this.Page; if (writer.IsValidFormAttribute("name")) { if ((((page != null) && (page.RequestInternal != null)) && (this.RenderingCompatibility < VersionUtil.Framework40)) && ((page.RequestInternal.Browser.W3CDomVersion.Major == 0) || (page.XhtmlConformanceMode != XhtmlConformanceMode.Strict))) { writer.WriteAttribute("name", this.Name); } base.Attributes.Remove("name"); } writer.WriteAttribute("method", this.Method); base.Attributes.Remove("method"); writer.WriteAttribute("action", this.GetActionAttribute(), true); base.Attributes.Remove("action"); if (page != null) { string clientOnSubmitEvent = page.ClientOnSubmitEvent; if (!string.IsNullOrEmpty(clientOnSubmitEvent)) { if (base.Attributes["onsubmit"] != null) { string s = base.Attributes["onsubmit"]; if (s.Length > 0) { if (!StringUtil.StringEndsWith(s, ';')) { s = s + ";"; } if (page.ClientSupportsJavaScript || !s.ToLower(CultureInfo.CurrentCulture).Contains("javascript")) { page.ClientScript.RegisterOnSubmitStatement(typeof(HtmlForm), "OnSubmitScript", s); } base.Attributes.Remove("onsubmit"); } } if (page.ClientSupportsJavaScript || !clientOnSubmitEvent.ToLower(CultureInfo.CurrentCulture).Contains("javascript")) { if (enableLegacyRendering) { writer.WriteAttribute("language", "javascript", false); } writer.WriteAttribute("onsubmit", clientOnSubmitEvent); } } if (((page.RequestInternal != null) && (page.RequestInternal.Browser.EcmaScriptVersion.Major > 0)) && ((page.RequestInternal.Browser.W3CDomVersion.Major > 0) && (this.DefaultButton.Length > 0))) { Control button = this.FindControl(this.DefaultButton); if ((button == null) && (this.Page != null)) { char[] anyOf = new char[] { '$', ':' }; if (this.DefaultButton.IndexOfAny(anyOf) != -1) { button = this.Page.FindControl(this.DefaultButton); } } if (!(button is IButtonControl)) { throw new InvalidOperationException(System.Web.SR.GetString("HtmlForm_OnlyIButtonControlCanBeDefaultButton", new object[] { this.ID })); } page.ClientScript.RegisterDefaultButtonScript(button, writer, false); } } base.EnsureID(); base.RenderAttributes(writer); }
/// <internalonly/> /// <devdoc> /// </devdoc> protected override void RenderAttributes(HtmlTextWriter writer) { ArrayList invalidAttributes = new ArrayList(); foreach (String key in Attributes.Keys) { if (!writer.IsValidFormAttribute(key)) { invalidAttributes.Add(key); } } foreach (String key in invalidAttributes) { Attributes.Remove(key); } bool enableLegacyRendering = EnableLegacyRendering; Page page = Page; if (writer.IsValidFormAttribute("name")) { // DevDiv 27328 Do not render name attribute for uplevel browser if (page != null && page.RequestInternal != null && RenderingCompatibility < VersionUtil.Framework40 && (page.RequestInternal.Browser.W3CDomVersion.Major == 0 || page.XhtmlConformanceMode != XhtmlConformanceMode.Strict)) { writer.WriteAttribute("name", Name); } Attributes.Remove("name"); } writer.WriteAttribute("method", Method); Attributes.Remove("method"); // Encode the action attribute - ASURT 66784 writer.WriteAttribute("action", GetActionAttribute(), true /*encode*/); Attributes.Remove("action"); // see if the page has a submit event if (page != null) { string onSubmit = page.ClientOnSubmitEvent; if (!String.IsNullOrEmpty(onSubmit)) { if (Attributes["onsubmit"] != null) { // If there was an onsubmit on the form, register it as an onsubmit statement and remove it from the attribute collection string formOnSubmit = Attributes["onsubmit"]; if (formOnSubmit.Length > 0) { if (!StringUtil.StringEndsWith(formOnSubmit, ';')) { formOnSubmit += ";"; } if (page.ClientSupportsJavaScript || !formOnSubmit.ToLower(CultureInfo.CurrentCulture).Contains("javascript")) { page.ClientScript.RegisterOnSubmitStatement(typeof(HtmlForm), "OnSubmitScript", formOnSubmit); } Attributes.Remove("onsubmit"); } } // Don't render the on submit if it contains javascript and the page doesn't support it if (page.ClientSupportsJavaScript || !onSubmit.ToLower(CultureInfo.CurrentCulture).Contains("javascript")) { if (enableLegacyRendering) { writer.WriteAttribute("language", "javascript", false); } writer.WriteAttribute("onsubmit", onSubmit); } } if ((page.RequestInternal != null) && (page.RequestInternal.Browser.EcmaScriptVersion.Major > 0) && (page.RequestInternal.Browser.W3CDomVersion.Major > 0)) { if (DefaultButton.Length > 0) { // Find control from the page if it's a hierarchical ID. // Dev11 bug 19915 Control c = FindControlFromPageIfNecessary(DefaultButton); if (c is IButtonControl) { page.ClientScript.RegisterDefaultButtonScript(c, writer, false /* UseAddAttribute */); } else { throw new InvalidOperationException(SR.GetString(SR.HtmlForm_OnlyIButtonControlCanBeDefaultButton, ID)); } } } } // We always want the form to have an id on the client // base.RenderAttributes takes care of actually rendering it. EnsureID(); base.RenderAttributes(writer); }