将数据绑定到ASP.NET控件

将数据绑定到ASP.NET控件,asp.net,data-binding,Asp.net,Data Binding,有没有办法将自定义类自动绑定到给定的一组web控件?例如,假设我有一个类的实例BindableObject public class BindableClass { public string FirstString { get; set; } public string SecondString { get; set; } public bool BooleanValue { get; set; } } 我希望能够(以某种方式)做到 前提是我以前定义了什么是SomeG

有没有办法将自定义类自动绑定到给定的一组web控件?例如,假设我有一个类的实例
BindableObject

public class BindableClass
{
    public string FirstString { get; set; }
    public string SecondString { get; set; }
    public bool BooleanValue { get; set; }
}
我希望能够(以某种方式)做到

前提是我以前定义了什么是
SomeGroupOfControls
,而不是必须这样做

txtSomeTextBox.Text = BindableObject.FirstString;
lblSomeTextBox.Text = BindableObject.SecondString;
chkSomeCheckBox.Checked = BindableObject.BooleanValue;

这可能吗?

您可以在用户控件和对象上使用反射。您可以循环浏览对象属性,在使用命名约定的usercontrol/panel中搜索webcontrol。检测控件的类型,以便能够设置选中属性或文本属性。

我认为这不是解决此类问题的好方法。即使传入一组控件,您如何知道要绑定到哪个控件的字段?当然,有了一大堆逻辑,你可能大部分时间都能让它工作,但我真的不认为它值得做那么多的工作。我也看不出这样做有什么实际的好处

我建议用老一套行之有效的方法:

Product prod = GetSomeProduct();    

txtProductName.Text = prod.ProductName;
txtProductCode.Text = prod.ProductCode;
如果您希望将一组对象绑定到一个datbind控件,那将是一个不同的故事,但是在您的情况下,没有理由这么做

以下是如何创建可绑定对象集合的示例:

public class Products : CollectionBase
{
    public Products()
    {
        // default constructor
    }

    public int Add(Product product)
    {
        return List.Add(product);
    }

    public void Remove(Product product)
    {
        List.Remove(product);
    }

    public class Product
    {

        private string productName;

        public Product(string Name)
        {
            productName = Name;
        }

        public string Name
        {
            get
            {
                return productName;
            }
            set
            {
                productName = value;
            }
        }
    }
}

你可以用。网上有很多关于如何使用它的教程和例子。它确实适用于DetailsView、GridView和FormView。它是非常可定制和灵活的控件,非常擅长将您的表示模型(aspx)与域模型分离,并允许执行您想要的操作—将目标类的属性映射到aspx中相应的绑定表达式。

本文介绍了一个使用反射和一些实用方法的解决方案:


这是一个很好的建议,但实施起来会很难看。
public class Products : CollectionBase
{
    public Products()
    {
        // default constructor
    }

    public int Add(Product product)
    {
        return List.Add(product);
    }

    public void Remove(Product product)
    {
        List.Remove(product);
    }

    public class Product
    {

        private string productName;

        public Product(string Name)
        {
            productName = Name;
        }

        public string Name
        {
            get
            {
                return productName;
            }
            set
            {
                productName = value;
            }
        }
    }
}