0

如何将值从实体层传递到表示层。我已经填充了对象 Person,但是当我在 Presentation 中调用它时它变为空。

谁能帮我。提前致谢!

实体:

public class Person
{
    public int PersonID { get; set; }
    public string Firstname { get; set; }
    public string Lastname { get; set; }
}

数据层:

public List<Person> GetPersonSingleByPersonID(string personID)
{
    List<Person> objPerson = new List<Person>();
    DataTable dt = new DataTable();

    ...

    foreach (DataRow dr in dt.Rows)
    {
        objPerson.Add(new Person()
        {
            PersonID = dr["PersonID"].ToString(),
            Firstname = dr["Firstname"].ToString(),
            Lastname = dr["Lastname"].ToString()            
        });
    }
    return objPerson;
}

表示层:

Person objPerson = new Person(); //I think error goes here
txtPersonID.Text = objPerson.PersonID;
txtFirstname.Text = objPerson.Firstname;
txtLastname.Text = objPerson.Lastname;
4

3 回答 3

1

您的代码存在一些问题:

  1. 为什么要GetPersonSingleByPersonID(string personID)返回一个列表?如果你想返回一个,你的方法应该定义为Person GetPersonSingleByPersonID(string personID)

  2. 你根本没有调用GetPersonSingleByPersonID(string personID)方法。Person相反,您正在创建一个新的类 ( )的“空白”实例,Person objPerson = new Person()您需要调用GetPersonSingleByPersonID(id)并且由于您返回的是一个列表而不是单个对象(请参见第 1 点。)您可能想要添加.FirstOrDefault().

Person objPerson = GetPersonSingleByPersonID(id).FirstOrDefault()

于 2013-11-14T09:21:25.147 回答
0

您需要在数据访问层中调用 GetPersonaSingleByPersonId() 方法。创建 DAL 的实例,然后调用该方法。这将返回您想要的带有详细信息的对象,然后您最终将其分配给文本框。

但请记住,该方法返回一个集合......因此,如果您要遍历整个集合并将其写入文本框,您将覆盖文本框中的先前值。

于 2013-11-14T09:21:25.317 回答
0

您最好在数据表示之间有一个业务层,您可以在其中从数据层获取实体并处理它们,然后转换为表示层对象。

于 2013-11-14T09:22:24.720 回答