无法从ViewModel访问数据?

时间:2015-10-23 15:13:51

标签: c# entity-framework model-view-controller viewmodel

我有一个包含两个表的视图模型,但是如果我正在更新我的实体框架,例如

查看型号:

public class MyViewModel
{
public IEnumerable<Telephone_Search.Models.tbl_pics> images;
public IEnumerable<Telephone_Search.Models.tbl_users> users;
}

控制器:

[HttpPost]
    public ActionResult Index(tbl_pics pic, HttpPostedFileBase file)
    {
        if (ModelState.IsValid)
        {
            if (file != null)
            {
                file.SaveAs(HttpContext.Server.MapPath("~/Images/")
                                                      + file.FileName);
                byte[] data = new byte[] { };
                using (var binaryReader = new BinaryReader(file.InputStream))
                {
                    data = binaryReader.ReadBytes(file.ContentLength);
                }
               pic.picture = file.FileName;
               pic.user_no = 20173;
               db.tbl_pics.Add(pic);
               db.SaveChanges();
            }
            return RedirectToAction("Index");
        }

        return View(pic);
    }

然后在我的剃刀视图中使用视图模型,例如@model ViewModel并尝试通过以下方式遍历用户:

@foreach (var img in Model.images) {
<img src="~/images/@pic.picture" width="100" height="100" />
}

值是否返回?

谢谢

1 个答案:

答案 0 :(得分:2)

您的viewmodel由两个集合imagesusers组成。

public class MyViewModel
{
    public IEnumerable<Telephone_Search.Models.tbl_pics> images;
    public IEnumerable<Telephone_Search.Models.tbl_users> users;
}

但是,在您的控制器方法中,您只返回集合imagesusers仍然为空。

[HttpPost]
public ActionResult Index(tbl_pics pic, HttpPostedFileBase file)
{
    ....
    return View(pic); // you are only returning the images here, not the users, or the viewmodel.
}

您需要在控制器方法中填充users集合。

其次,这个

@foreach (var img in Model.Users) {
    <img src="~/images/@pic.picture" width="100" height="100" />
}

没有意义。这里定义的@pic在哪里?