您的位置:首页 > 编程语言 > ASP

读使用反射将业务对象绑定到 ASP.NET 窗体控件有感(二)

2007-09-14 13:34 561 查看
看完pethsop4中的web/controls/Addressform.ascx之后,才发现对这篇文章理解有误,其实可以用控件来完成表单,而这个控件跟一个实体类一般是一对一,且属性相同,所有可以把这个实体类作为控件的属性,把控件的输入的控件的内容就等于这个实体类的属性。Addressform.ascx.cs代码如下:

 

using PetShop.Model;
using System.Text.RegularExpressions;

namespace PetShop.Web {

public partial class AddressForm : System.Web.UI.UserControl {

/// <summary>
/// Control property to set or get the address
/// </summary>
public AddressInfo Address {
get {

// Return null if control is empty
if (string.IsNullOrEmpty(txtFirstName.Text) &&
string.IsNullOrEmpty(txtLastName.Text) &&
string.IsNullOrEmpty(txtAddress1.Text) &&
string.IsNullOrEmpty(txtAddress2.Text) &&
string.IsNullOrEmpty(txtCity.Text) &&
string.IsNullOrEmpty(txtZip.Text) &&
string.IsNullOrEmpty(txtEmail.Text) &&
string.IsNullOrEmpty(txtPhone.Text))
return null;

// Make sure we clean the input
string firstName = WebUtility.InputText(txtFirstName.Text, 50);
string lastName = WebUtility.InputText(txtLastName.Text, 50);
string address1 = WebUtility.InputText(txtAddress1.Text, 50);
string address2 = WebUtility.InputText(txtAddress2.Text, 50);
string city = WebUtility.InputText(txtCity.Text, 50);
string zip = WebUtility.InputText(txtZip.Text, 10);
string phone = WebUtility.InputText(WebUtility.CleanNonWord(txtPhone.Text), 10);
string email = WebUtility.InputText(txtEmail.Text, 80);
string state = WebUtility.InputText(listState.SelectedItem.Value, 2);
string country = WebUtility.InputText(listCountry.SelectedItem.Value, 50);

return new AddressInfo(firstName, lastName, address1, address2, city, state, zip, country, phone, email);
}
set {
if(value != null) {
if(!string.IsNullOrEmpty(value.FirstName))
txtFirstName.Text = value.FirstName;
if(!string.IsNullOrEmpty(value.LastName))
txtLastName.Text = value.LastName;
if(!string.IsNullOrEmpty(value.Address1))
txtAddress1.Text = value.Address1;
if(!string.IsNullOrEmpty(value.Address2))
txtAddress2.Text = value.Address2;
if(!string.IsNullOrEmpty(value.City))
txtCity.Text = value.City;
if(!string.IsNullOrEmpty(value.Zip))
txtZip.Text = value.Zip;
if(!string.IsNullOrEmpty(value.Phone))
txtPhone.Text = value.Phone;
if(!string.IsNullOrEmpty(value.Email))
txtEmail.Text = value.Email;
if(!string.IsNullOrEmpty(value.State)) {
listState.ClearSelection();
listState.SelectedValue = value.State;
}
if(!string.IsNullOrEmpty(value.Country)) {
listCountry.ClearSelection();
listCountry.SelectedValue = value.Country;
}
}
}
}

}
}

参考:

1.运用反射给实体赋值:http://dotnet.e800.com.cn/articles/2007/11/1167639881603150378_1.html

2.面向对象开发中的数据控件绑定方案:http://www.cchensoft.com/Articles/ArticleDetails.aspx?id=fzp2nm
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: