1 /* System.Web.UI.HtmlControls
\r
3 * Leen Toelen (toelen@hotmail.com)
\r
7 using System.Collections;
\r
8 using System.ComponentModel;
\r
11 using System.Web.UI;
\r
12 using System.Web.Util;
\r
14 namespace System.Web.UI.HtmlControls{
\r
16 public class HtmlForm : HtmlContainerControl{
\r
19 //private static string SmartNavIncludeScriptKey = "SmartNavIncludeScript";
\r
21 public HtmlForm(): base("form"){}
\r
23 protected override void RenderAttributes(HtmlTextWriter writer){
\r
24 writer.WriteAttribute("name", Name);
\r
25 Attributes.Remove("name");
\r
26 writer.WriteAttribute("method", Method);
\r
27 Attributes.Remove("method");
\r
28 writer.WriteAttribute("action", Action, true);
\r
29 Attributes.Remove("action");
\r
30 if (Enctype != null){
\r
31 writer.WriteAttribute ("enctype", Enctype);
\r
32 Attributes.Remove ("enctype");
\r
35 Hashtable onSubmit = Page.ClientScript.submitStatements;
\r
36 if (onSubmit != null && onSubmit.Count > 0){
\r
37 StringBuilder sb = new StringBuilder ();
\r
38 string prev = Attributes ["onsubmit"];
\r
41 Attributes.Remove ("onsubmit");
\r
44 foreach (Hashtable hash in onSubmit.Values) {
\r
45 foreach (string s in hash.Values) {
\r
50 writer.WriteAttribute ("language", "javascript");
\r
51 writer.WriteAttribute ("onsubmit", sb.ToString ());
\r
55 writer.WriteAttribute ("id", ClientID);
\r
57 base.RenderAttributes (writer);
\r
60 protected override void Render(HtmlTextWriter output){
\r
61 /*** Disabled smart navigation. We have no scripts - Gonzalo
\r
62 if (Page.SmartNavigation == false){
\r
63 base.Render (output);
\r
67 ((IAttributeAccessor) this).SetAttribute("_smartNavigation","true");
\r
68 HttpBrowserCapabilities browserCap = Context.Request.Browser;
\r
69 if (browserCap.Browser.ToLower() != "ie" && browserCap.MajorVersion < 5){
\r
70 base.Render(output);
\r
73 output.WriteLine("<IFRAME ID=_hifSmartNav NAME=_hifSmartNav STYLE=display:none ></IFRAME>");
\r
75 if (browserCap.MinorVersion < 0.5 && browserCap.MajorVersion != 5)
\r
76 Page.RegisterClientScriptFile("SmartNavIncludeScript","JScript","SmartNavIE5.js");
\r
77 else if (Page.IsPostBack) Page.RegisterClientScriptFile("SmartNavIncludeScript","JScript","SmartNav.js");
\r
79 base.Render(output);
\r
82 protected override void RenderChildren (HtmlTextWriter writer)
\r
84 Page.OnFormRender (writer,ClientID);
\r
85 base.RenderChildren (writer);
\r
86 Page.OnFormPostRender (writer,ClientID);
\r
89 protected override void OnInit(EventArgs e){
\r
91 Page.RegisterViewStateHandler();
\r
93 Page.RegisterForm (this);
\r
97 internal string Action {
\r
99 string executionFilePath = Context.Request.CurrentExecutionFilePath;
\r
100 string filePath = Context.Request.FilePath;
\r
102 if (executionFilePath == filePath) {
\r
104 int lastSlash = attr.LastIndexOf('/');
\r
105 if (lastSlash >= 0)
\r
106 attr = attr.Substring(lastSlash + 1);
\r
108 attr = UrlUtils.MakeRelative (executionFilePath, UrlUtils.GetDirectory (filePath));
\r
110 attr = executionFilePath;
\r
112 string queryString = Context.Request.QueryStringRaw;
\r
113 if (queryString != null && queryString.Length > 0)
\r
114 attr = String.Concat(attr, '?', queryString);
\r
120 [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
\r
121 [WebCategory("Behavior")]
\r
122 public string Enctype{
\r
124 string attr = Attributes["enctype"];
\r
131 Attributes["enctype"] = AttributeToString(value);
\r
136 [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
\r
137 [WebCategory("Behavior")]
\r
138 public string Method{
\r
140 string attr = Attributes["method"];
\r
147 Attributes["method"] = AttributeToString(value);
\r
152 [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
\r
153 [WebCategory("Behavior")]
\r
154 public string Target{
\r
156 string attr = Attributes["target"];
\r
160 return String.Empty;
\r
163 Attributes["target"] = AttributeToString(value);
\r
168 [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
\r
169 [WebCategory("Appearance")]
\r
170 public virtual string Name{
\r
177 } // class HtmlForm
\r
178 } // namespace System.Web.UI.HtmlControls
\r