Spring.Web 之双向数据绑定(Bidirectional data binding)

        目前ASP.NET中的数据绑定是单向的,即允许开发人员将数据模型帮定到页面控件上显示,提交表单的时候,必须再次将页面控件值绑定到数据模型。大家都不太喜欢写这样的代码。
        通过自定义特性,
Spring.Web提供了控件与数据模型的双向绑定的功能,减少了代码量。
        双向绑定使用起来很方便,但页面类需要从Spring.Web.UI.Page类继承。

        public class UserRegistration : Spring.Web.UI.Page
        {
                [Binding("Text", "UserInfo.Email")]
                protected TextBox email;
                // ……
                // 此属性即数据模型
                private User m_User; 
                public User UserInfo
                {
                    get { return m_User; }
                    set { m_User = value; }
                }   
        }

        Binding特性有可选参数OneWay(第三个参数),如果为true,退化为单向绑定,即不再更新模型数据,对只读的数据或者通过计算得到的只读数据特别有用。另一个可选参数为Format,用于指定绑定值的显示格式,通常和OneWay联合使用,提供日期或数值自定义格式,支持String.Format方法支持的格式表达式。
        类型转换,绑定时,Spring.Web试图进行数据转换,如果指定Format参数,Spring.Web将使用此参数将数据模型值转为String,否则,使用.NET的类型转换机制。
        数据绑定事件,Spring.Web的页面基类在.NET页面的生命周期加入两个事件:DataBoundDataUnboundDataBound事件在控件值被更新后激发,在PreRender事件之前。事件发生顺序为:Load――>DataBound――>PreRender,这样是合适的,在Load事件处理代码中对数据模型做出修改,能反映在控件上。DataUnbound事件在数据模型被更新后激发,在Load事件之后,此时是回发。

参考:spring-net-reference.pdf。

很遗憾,使用Spring.NET 1.1 Preview 2没有测试成功,。我会继续跟踪,新版本或许能解决问题。

posted on 2006-05-23 14:09  快乐尘埃  阅读(1397)  评论(0编辑  收藏  举报