如何使用2个不同的模型创建viewmodel

时间:2013-08-02 13:39:27

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

我想创建一个viewmodel,在我的视图中访问我创建的两个不同的模型。

为此,我创建了两个不同的模型和一个我包含两个模型的模型。

我的问题是,在我看来,我无法访问数据。

希望任何人都可以帮忙解决这个问题。

我认为需要表达的是: 表格1 : 名称 标题

表2: 每张图片的picpath

这是我的代码:

模型1:

 public class Table1
    {
        public int ID { get; set; }
        public string name{ get; set; }
        public string title { get; set; }
        public string edition{ get; set; }
        public string number{ get; set; }

    }

   public class DefaultConnection : DbContext
    {
        public DbSet<Table1> Res{ get; set; }
    }

模型2:

 public class Images
    {
        public SelectList ImageList { get; set; }   
        public int ID { get; set; }
        public string title{ get; set; }
        public string picpath { get; set; }

        public Img)
        {
            ImageList = GetImages();
        }

        public SelectList GetImages()
        {
            var list = new List<SelectListItem>();
            string connection = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;

            using (var con = new SqlConnection(connection))
            {
                con.Open();
                using (var command = new SqlCommand("SELECT * FROM Myimages", con))
                {
                    SqlDataReader reader = command.ExecuteReader();
                    while (reader.Read())
                    {
                        string title = reader[1] as string;
                        string imagePath = reader[2] as string;
                        list.Add(new SelectListItem() { Text = title, Value = imagePath });
                    }
                }
                con.Close();
            }
            return new SelectList(list, "Value", "Text");
        }

    }

MY VIEW模型:

 public class ViewModel
    {
        public Table1 table1{ get; set; }
        public Images xpto { get; set; }

        public ViewModel(Table1 table1)
        {
            Table1 = table1;
            xpto = new Images();
        }
    }



**Controller:**

 public ActionResult HotSpotMaker(int id = 0)
        {
            Table1 rev = db.Res.Find(id);          
            if (rev == null)
            {
                return HttpNotFound();
            }
//Here is something missing, have delete my version here because don´t make any sense
            return View(rev);
        }

查看:

  @model myproject.Models.ViewModel

注意:我搜索了很多,并发现很多人都使用它:@model myproject.Web.Models.ViewModel,但是我无法选择这个网站。 。我不知道这是否相关,我想也许这很重要。

2 个答案:

答案 0 :(得分:3)

您将Table1作为视图模型传递,但这不是您的视图模型。

尝试:

return View(new Models.ViewModel(rev));

答案 1 :(得分:1)

嗯,这很简单,你的View期待一个ViewModel(顺便说一句,这个名字不好,但我怀疑它只是一个测试),但你给它一个{{1} },您的视图根本不知道如何处理它。

您需要一种方法从Table1对象

创建ViewModel对象

在你的情况下,只需像这样调用你的构造函数

Table1