我刚刚按照MVC教程创建了一个图像库,它将Controller连接到数据连接,如下所示:
ImageController.cs:
...
private CustomMembershipDB db = new CustomMembershipDB();
public ViewResult Index()
{
return View(db.lm_pics.ToList());
}
...
我不想直接连接到CustomMembershipDB,而是想使用我自己的名为GalleryModel.cs的Model。我认为这将允许我创建更多只能直接访问数据的功能。
我不确定如何编写此模型,或者如何在控制器中引用它,以使其行为与直接数据库连接现在的行为相同。
目前,我的GalleryModel.cs文件看起来像这样(编辑纠正错误):
namespace LMProj_MVC.Models
{
public class GalleryModel
{
public string Picname { get; set; }
public string Decription{ get; set; }
public int Userid { get; set; }
}
public class PicDBContext : CustomMembershipDB
{
public DbSet<GalleryModel> GalleryModel { get; set; }
}
}
除了创建其他方法之外,我希望能够像现在一样使用iEnumberable列表来显示图库。有人能告诉我我错过了什么吗?
答案 0 :(得分:1)
您需要为每个数据库图片创建模型对象的实例。您可以使用LINQ来执行此操作,例如:
var picSummaries = db.lm_pics.Select(pic => new GalleryModel{
Picname = pic.Name,
Description = pic.Description,
Userid = pic.User.Id
});
或者你可以为每个循环使用a:
var picSummaries = new List<GalleryModel>();
foreach (var pic in db.lm_pics)
{
picSummaries.Add(new GalleryModel{
Picname = pic.Name,
Description = pic.Description,
Userid = pic.User.Id
});
}
然后像以前一样返回视图:
return View(picSummaries);