【问题标题】:Binding Data to ASP.NET Controls将数据绑定到 ASP.NET 控件
【发布时间】:2011-10-19 05:42:51
【问题描述】:

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

public class BindableClass
{
    public string FirstString { get; set; }
    public string SecondString { get; set; }
    public bool BooleanValue { get; set; }
}

我希望能够(以某种方式)做

BindableObject.BindToForm(SomeGroupOfControls);

假设我之前已经定义了 SomeGroupOfControls 是什么,而不是必须做

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

这有可能吗?

【问题讨论】:

    标签: asp.net data-binding


    【解决方案1】:

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

    我建议用久经考验的老方法:

    Product prod = GetSomeProduct();    
    
    txtProductName.Text = prod.ProductName;
    txtProductCode.Text = prod.ProductCode;
    

    如果您希望将一组对象绑定到一个 datbound 控件,那将是另一回事,但在您的情况下确实没有理由这样做。

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

    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;
                }
            }
        }
    }
    

    【讨论】:

      【解决方案2】:

      您可以在用户控件和对象上使用反射。您将遍历对象属性,在用户控件/面板中搜索使用命名约定的 web 控件。检测控件的类型以便能够设置 Checked 或 Text 属性。

      【讨论】:

      • 这是一个很好的建议,但实现起来会很丑。
      【解决方案3】:

      您可以使用ObjectDataSource class。网上有很多关于如何使用它的教程和示例。它肯定适用于 DetailsView、GridView 和 FormView。它是非常可定制和灵活的控制,它非常擅长将您的表示模型 (aspx) 与域模型分离,并允许您做任何您想做的事情 - 将目标类的属性映射到 aspx 中相应的 Bind 表达式。

      【讨论】:

        【解决方案4】:

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

        http://msdn.microsoft.com/en-us/library/aa478957.aspx

        【讨论】:

          猜你喜欢
          • 2013-05-18
          • 1970-01-01
          • 2010-10-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-02-18
          相关资源
          最近更新 更多