See this thread on the Dynamic Data Forum where I suggested you could use [DataType(DataType.Password)] attribute to mark the field as a password field and alternative would be to create a custom FieldTemplate and use [UIHint("Password")] to set it.
This just means the extra logic I implement for the password is only used on password fields and not all Text fields.
<%@ Control Language="C#" CodeBehind="Password.ascx.cs" Inherits="DD_EF4_PasswordField.PasswordField" %> <asp:Literal runat="server" ID="Literal1" />
Listing 1 – Password.ascx
using System; using System.Web.UI; namespace DD_EF4_PasswordField { public partial class PasswordField : System.Web.DynamicData.FieldTemplateUserControl { protected void Page_Load(object sender, EventArgs e) { // add a string of '*' the max length of the field var length = Column.MaxLength > 20 ? 20 : Column.MaxLength; Literal1.Text = new String('*', length); } public override Control DataControl { get { return Literal1; } } } }
Listing 1 & 2 represent the Password (Normal) FieldTemplate.
This is FieldTemplate just displays a list of '*' the max length of the field instead of the actual text.
<%@ Control Language="C#" CodeBehind="Password_Edit.ascx.cs" Inherits="DD_EF4_PasswordField.Password_EditField" %> <asp:TextBox ID="TextBox1" runat="server" TextMode="Password" CssClass="DDTextBox" > </asp:TextBox> <asp:RequiredFieldValidator runat="server" ID="RequiredFieldValidator1" CssClass="DDControl" ControlToValidate="TextBox1" Display="Dynamic" Enabled="false" /> <asp:RegularExpressionValidator runat="server" ID="RegularExpressionValidator1" CssClass="DDControl" ControlToValidate="TextBox1" Display="Dynamic" Enabled="false" /> <asp:DynamicValidator runat="server" ID="DynamicValidator1" CssClass="DDControl" ControlToValidate="TextBox1" Display="Dynamic" />
Listing 3 – Password_Edit.ascx
using System; using System.Collections.Specialized; using System.Web.DynamicData; using System.Web.UI; namespace DD_EF4_PasswordField { public partial class Password_EditField : FieldTemplateUserControl { protected void Page_Load(object sender, EventArgs e) { if (Column.MaxLength < 20) { TextBox1.Columns = Column.MaxLength; } TextBox1.ToolTip = Column.Description; SetUpValidator(RequiredFieldValidator1); SetUpValidator(RegularExpressionValidator1); SetUpValidator(DynamicValidator1); } protected override void OnDataBinding(EventArgs e) { base.OnDataBinding(e); TextBox1.MaxLength = Math.Max(FieldValueEditString.Length, Column.MaxLength); } protected override void ExtractValues(IOrderedDictionary dictionary) { if (TextBox1.Text.Length > 0) dictionary[Column.Name] = ConvertEditedValue(TextBox1.Text); } public override Control DataControl { get { return TextBox1; } } } }
Listing 4 – Password_Edit.ascx.cs
Listings 3 & 4 are for the Edit version Password_Edit FieldTemplate.
Here the TextBox’s TextMode is set to Password so that any password you type in is hidden.