1 // 2 // System.Web.UI.HtmlControls.HtmlInputText.cs 3 // 4 // Author: 5 // Sebastien Pouliot <sebastien@ximian.com> 6 // 7 // Copyright (C) 2005-2010 Novell, Inc (http://www.novell.com) 8 // 9 // Permission is hereby granted, free of charge, to any person obtaining 10 // a copy of this software and associated documentation files (the 11 // "Software"), to deal in the Software without restriction, including 12 // without limitation the rights to use, copy, modify, merge, publish, 13 // distribute, sublicense, and/or sell copies of the Software, and to 14 // permit persons to whom the Software is furnished to do so, subject to 15 // the following conditions: 16 // 17 // The above copyright notice and this permission notice shall be 18 // included in all copies or substantial portions of the Software. 19 // 20 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 21 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 22 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 23 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 24 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 25 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 26 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 27 // 28 29 using System.ComponentModel; 30 using System.Collections.Specialized; 31 using System.Globalization; 32 using System.Security.Permissions; 33 using System.Web.Util; 34 35 namespace System.Web.UI.HtmlControls 36 { 37 // CAS 38 [AspNetHostingPermission (SecurityAction.LinkDemand, Level = AspNetHostingPermissionLevel.Minimal)] 39 [AspNetHostingPermission (SecurityAction.InheritanceDemand, Level = AspNetHostingPermissionLevel.Minimal)] 40 // attributes 41 [DefaultEvent ("ServerChange")] 42 [ValidationProperty ("Value")] 43 [SupportsEventValidation] 44 public class HtmlInputText : HtmlInputControl, IPostBackDataHandler 45 { 46 static readonly object serverChangeEvent = new object (); 47 HtmlInputText()48 public HtmlInputText () 49 : base ("text") 50 { 51 } 52 HtmlInputText(string type)53 public HtmlInputText (string type) 54 : base (type) 55 { 56 } 57 58 [DefaultValue ("")] 59 [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)] 60 [WebSysDescription("")] 61 [WebCategory("Behavior")] 62 public int MaxLength { 63 get { 64 string s = Attributes ["maxlength"]; 65 return (s == null) ? -1 : Convert.ToInt32 (s); 66 } 67 set { 68 if (value == -1) 69 Attributes.Remove ("maxlength"); 70 else 71 Attributes ["maxlength"] = value.ToString (); 72 } 73 } 74 75 [DefaultValue (-1)] 76 [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)] 77 [WebSysDescription("")] 78 [WebCategory("Appearance")] 79 public int Size { 80 get { 81 string s = Attributes ["size"]; 82 return (s == null) ? -1 : Convert.ToInt32 (s); 83 } 84 set { 85 if (value == -1) 86 Attributes.Remove ("size"); 87 else 88 Attributes ["size"] = value.ToString (); 89 } 90 } 91 92 public override string Value { 93 get { 94 string s = Attributes ["value"]; 95 return (s == null) ? String.Empty : s; 96 } 97 set { 98 if (value == null) 99 Attributes.Remove ("value"); 100 else 101 Attributes ["value"] = value; 102 } 103 } 104 Render(HtmlTextWriter writer)105 protected internal override void Render (HtmlTextWriter writer) 106 { 107 Page page = Page; 108 if (page != null) 109 page.ClientScript.RegisterForEventValidation (UniqueID); 110 base.Render (writer); 111 } 112 OnPreRender(EventArgs e)113 protected internal override void OnPreRender (EventArgs e) 114 { 115 base.OnPreRender (e); 116 117 Page page = Page; 118 if (page != null && !Disabled) { 119 page.RegisterRequiresPostBack (this); 120 page.RegisterEnabledControl (this); 121 } 122 } 123 OnServerChange(EventArgs e)124 protected virtual void OnServerChange (EventArgs e) 125 { 126 EventHandler serverChange = (EventHandler) Events [serverChangeEvent]; 127 if (serverChange != null) 128 serverChange (this, e); 129 } 130 RenderAttributes(HtmlTextWriter writer)131 protected override void RenderAttributes (HtmlTextWriter writer) 132 { 133 // the Type property can be, indirectly, changed by using the Attributes property 134 if (String.Compare (Type, 0, "password", 0, 8, true, Helpers.InvariantCulture) == 0) { 135 Attributes.Remove ("value"); 136 } 137 138 base.RenderAttributes (writer); 139 } 140 LoadPostDataInternal(string postDataKey, NameValueCollection postCollection)141 bool LoadPostDataInternal (string postDataKey, NameValueCollection postCollection) 142 { 143 string s = postCollection [postDataKey]; 144 if (Value != s) { 145 Value = s; 146 return true; 147 } 148 return false; 149 } 150 RaisePostDataChangedEventInternal()151 void RaisePostDataChangedEventInternal () 152 { 153 OnServerChange (EventArgs.Empty); 154 } 155 LoadPostData(string postDataKey, NameValueCollection postCollection)156 protected virtual bool LoadPostData (string postDataKey, NameValueCollection postCollection) 157 { 158 return LoadPostDataInternal (postDataKey, postCollection); 159 } 160 RaisePostDataChangedEvent()161 protected virtual void RaisePostDataChangedEvent () 162 { 163 ValidateEvent (UniqueID, String.Empty); 164 RaisePostDataChangedEventInternal (); 165 } 166 IPostBackDataHandler.LoadPostData(string postDataKey, NameValueCollection postCollection)167 bool IPostBackDataHandler.LoadPostData (string postDataKey, NameValueCollection postCollection) 168 { 169 return LoadPostData (postDataKey, postCollection); 170 } 171 IPostBackDataHandler.RaisePostDataChangedEvent()172 void IPostBackDataHandler.RaisePostDataChangedEvent () 173 { 174 RaisePostDataChangedEvent (); 175 } 176 177 [WebSysDescription("")] 178 [WebCategory("Action")] 179 public event EventHandler ServerChange { 180 add { Events.AddHandler (serverChangeEvent, value); } 181 remove { Events.RemoveHandler (serverChangeEvent, value); } 182 } 183 } 184 } 185