**** Merged from MCS ****
[mono-project.git] / mcs / class / System.Web / System.Web.UI.HtmlControls / HtmlForm.cs
blob144192cfbcfc4bcf2450f1541e00bf430c14bda6
1 /* System.Web.UI.HtmlControls
2 * Authors
3 * Leen Toelen (toelen@hotmail.com)
4 */
6 using System;
7 using System.Collections;
8 using System.ComponentModel;
9 using System.Text;
10 using System.Web;
11 using System.Web.UI;
13 namespace System.Web.UI.HtmlControls{
15 public class HtmlForm : HtmlContainerControl{
17 // Unused
18 //private static string SmartNavIncludeScriptKey = "SmartNavIncludeScript";
20 public HtmlForm(): base("form"){}
22 protected override void RenderAttributes(HtmlTextWriter writer){
23 writer.WriteAttribute("name", Name);
24 Attributes.Remove("name");
25 writer.WriteAttribute("method", Method);
26 Attributes.Remove("method");
27 writer.WriteAttribute("action", Action, true);
28 Attributes.Remove("action");
29 if (Enctype != null){
30 writer.WriteAttribute ("enctype", Enctype);
31 Attributes.Remove ("enctype");
34 Hashtable onSubmit = Page.submitStatements;
35 if (onSubmit != null && onSubmit.Count > 0){
36 StringBuilder sb = new StringBuilder ();
37 string prev = Attributes ["onsubmit"];
38 if (prev != null){
39 sb.Append (prev);
40 Attributes.Remove ("onsubmit");
43 foreach (string s in onSubmit.Values)
44 sb.Append (s);
46 writer.WriteAttribute ("language", "javascript");
47 writer.WriteAttribute ("onsubmit", sb.ToString ());
50 if (ID == null)
51 writer.WriteAttribute ("id", ClientID);
53 base.RenderAttributes (writer);
56 protected override void Render(HtmlTextWriter output){
57 /*** Disabled smart navigation. We have no scripts - Gonzalo
58 if (Page.SmartNavigation == false){
59 base.Render (output);
60 return;
63 ((IAttributeAccessor) this).SetAttribute("_smartNavigation","true");
64 HttpBrowserCapabilities browserCap = Context.Request.Browser;
65 if (browserCap.Browser.ToLower() != "ie" && browserCap.MajorVersion < 5){
66 base.Render(output);
67 return;
69 output.WriteLine("<IFRAME ID=_hifSmartNav NAME=_hifSmartNav STYLE=display:none ></IFRAME>");
71 if (browserCap.MinorVersion < 0.5 && browserCap.MajorVersion != 5)
72 Page.RegisterClientScriptFile("SmartNavIncludeScript","JScript","SmartNavIE5.js");
73 else if (Page.IsPostBack) Page.RegisterClientScriptFile("SmartNavIncludeScript","JScript","SmartNav.js");
75 base.Render(output);
78 protected override void RenderChildren (HtmlTextWriter writer)
80 Page.OnFormRender (writer,ClientID);
81 base.RenderChildren (writer);
82 Page.OnFormPostRender (writer,ClientID);
85 protected override void OnInit(EventArgs e){
86 base.OnInit(e);
87 Page.RegisterViewStateHandler();
90 internal string Action{
91 get{
92 string executionFilePath = Context.Request.CurrentExecutionFilePath;
93 string filePath = Context.Request.FilePath;
94 string attr;
95 if (String.ReferenceEquals(executionFilePath, filePath) == true){
96 attr = filePath;
97 int lastSlash = attr.LastIndexOf('/');
98 if (lastSlash >= 0)
99 attr = attr.Substring(lastSlash + 1);
101 else{
102 attr = System.Web.Util.UrlUtils.MakeRelative(filePath,executionFilePath);
104 string queryString = Context.Request.QueryStringRaw;
105 if (queryString != null && queryString.Length > 0)
106 attr = String.Concat(attr, '?', queryString);
107 return attr;
111 [DefaultValue("")]
112 [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
113 [WebCategory("Behavior")]
114 public string Enctype{
115 get{
116 string attr = Attributes["enctype"];
117 if (attr != null){
118 return attr;
120 return "";
122 set{
123 Attributes["enctype"] = AttributeToString(value);
127 [DefaultValue("")]
128 [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
129 [WebCategory("Behavior")]
130 public string Method{
131 get{
132 string attr = Attributes["method"];
133 if (attr != null){
134 return attr;
136 return "post";
138 set{
139 Attributes["method"] = AttributeToString(value);
143 [DefaultValue("")]
144 [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
145 [WebCategory("Behavior")]
146 public string Target{
147 get{
148 string attr = Attributes["target"];
149 if (attr != null){
150 return attr;
152 return String.Empty;
154 set{
155 Attributes["target"] = AttributeToString(value);
159 [DefaultValue("")]
160 [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
161 [WebCategory("Appearance")]
162 public virtual string Name{
163 get{
164 return UniqueID;
166 set {
169 } // class HtmlForm
170 } // namespace System.Web.UI.HtmlControls