ASP.NET 动态数据教程-用 DataType 改变字段模板

作者:vkvi 来源:ITPOW(原创) 日期:2009-5-11

之前谈过用 UIHint 使用不同的模板,现在介绍另一种方法。

比如我们现在在做一个 Password 框,我们可以另外做一个控件来实现 Password 框,但我们发现 Password 框实际上是 Text 的一种,为什么不将就 Text_Edit.ascx,只改一下 TextMode 来实现呢。

首先用分部类,将 DataType 设置为 Password。

using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
 
namespace DynamicData
{
    [MetadataType(typeof(CompaniesMetaData))]
    public partial class Companies
    {
   
    }
   
    public class CompaniesMetaData
    {
        [DataType(DataType.Password)]
        public object Password { get; set; }
    }
}

然后在 Text_Edit.ascx,给 TextBox1 增加 DataBinding。

using System.ComponentModel.DataAnnotations;

protected void TextBox1_DataBinding(object sender, EventArgs e)
{
    var metadata = MetadataAttributes.OfType<DataTypeAttribute>().FirstOrDefault();
    if (metadata.DataType == System.ComponentModel.DataAnnotations.DataType.Password)
    {
        TextBox1.TextMode = TextBoxMode.Password;
    }
}
相关文章