【问题标题】:Complex model binding in ado.netado.net 中的复杂模型绑定
【发布时间】:2019-01-01 07:39:57
【问题描述】:

我正在从数据库中获取一个表。该表正在使用其他表的连接。我正在努力将它与我的模型绑定。向两个表中插入数据都可以正常工作。

我正在从数据库中获取值,但不知道如何将地址转换为列表。

public class address
{
    public int id { get; set; }
    public string peopleaddress { get; set; }
}

public class People
{
    public int id { get; set; }
    public string Name { get; set; }
    public string LastName { get; set; }

    public string address { get; set; }
    public List<string> cityid  { get; set; }    // is equal to people address
    public string shortimagepath { get; set; }
    public string fullimagepath { get; set; }
}

这是我使用 ado.net 的dbcontext 课程

    public List<People> selectallpeople()
    {
        List<People> peopleslist = new List<People>();
        List<address> addresses = new List<address>();

        using (SqlConnection sqlConnection=new SqlConnection(dbconnect))
        {
            SqlCommand sqlCommand = new SqlCommand("selectallpeople", sqlConnection);
            sqlCommand.CommandType = CommandType.StoredProcedure;
            SqlDataAdapter sqlDataAdapter = new SqlDataAdapter(sqlCommand);
            DataTable datatable = new DataTable();
            sqlDataAdapter.Fill(datatable);

            foreach (DataRow item in datatable.Rows)
            {
                addresses.Add(new address
                {
                    peopleaddress = item["address"].ToString(),
                });

                peopleslist.Add(new People
                {
                    id = (int)item["id"],
                    Name = item["name"].ToString(),
                    LastName = item["lastname"].ToString(),
                    shortimagepath = item["imageshortpath"].ToString(),
                    // I am struggling here to bind address column to list of address
                });
            }

            return peopleslist;
        }

我正在从数据库中获取所有值,但我需要将多个地址绑定到地址列表。

【问题讨论】:

  • 也许您可以进一步澄清您的问题...
  • @NoChance 如何将列与公共列表绑定 cityid .一个人有很多地址,那么如何将这些地址绑定到一个人很简单
  • 我不清楚你想要什么!但可能会有所帮助string addressListSepartedbyCommas = string.Join(",", address Array)

标签: c# sql asp.net sql-server asp.net-mvc


【解决方案1】:

您可以参考我的解决方案。希望对你有所帮助,新年快乐,我的朋友:))

foreach (DataRow item in datatable.Rows)
{
                int idObj = (int)item["id"] //This Id for both, right?           
                addresses.Add(new address
                {
                    id = idObj,
                    peopleaddress = item["address"].ToString(),
                });

                peopleslist.Add(new People
                {
                    id = (int)item["id"],
                    Name = item["name"].ToString(),
                    LastName = item["lastname"].ToString(),
                    shortimagepath = item["imageshortpath"].ToString(),
                    // I am struggling here to bind address column to list of address
                    cityid  = addresses.Where(t => t.id == idObj)
                             .Select(t=>t.peopleaddress.ToString()).ToList()
                });


}

在视图中你可以这样显示cityid:

foreach(var item in peopleslist)
{
     var lstCityId = String.Join(",", item.cityid).ToString();    
}

【讨论】:

  • 它似乎将所有地址绑定到每个客户我需要将一个客户绑定到他们的多个地址而不是每个地址。​​@tomato32
  • 请提高您答案的可读性。当你写下答案时,它下面有一个预览。考虑看看它。
  • @ahmedshah:您需要先过滤数据。我编辑了我的解决方案。请参考。抱歉,我的朋友回复晚了。
  • @JohnyL:我真的很抱歉。我编辑了它。新年快乐,我的朋友:))
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-18
  • 2021-02-05
  • 1970-01-01
  • 2016-03-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多