我想了解(并最终欣赏,因为现在它只是痛苦......)MVC 中的更多 ViewModel 和强类型视图。
我的视图模型
public class Combined
{
public IEnumerable<Domain> Domains { get; set; }
public IEnumerable<RegInfo> RegInfos { get; set; }
public Combined(IEnumerable<Domain> domains, IEnumerable<RegInfo> reginfos)
{
this.Domains = domains;
this.RegInfos = reginfos;
}
在控制器中,我将数据从存储库传递到组合类型的对象。
public ActionResult RegDetails(int id = 0)
{
var domain = from x in unitofwork.DomainRepository.Get(n => n.ID == id)
select x;
var reginfo = from y in unitofwork.ReginfoRepository.Get(n => n.ID == id)
select y;
var regdetails = new Combined(domain, reginfo);
return View(regdetails);
}
在视图中(使用 Razor)我有 @model project.namespace.Combined 所以我传递了一个包含两个列表的对象。
1/ 为什么我不能像@Model.Domain.Name 这样访问每个列表项(问题很简单,但请帮助我理解其背后的逻辑)?我可以通过使用连接来形成视图“级别”,但这完全违反 MVC 模式。我认为加入这两个表的唯一地方是在 Controller 中,但它会创建全新的对象,所以我需要为它创建一个模型吗?
2/ 获取 IEnumerable 对象的最佳方法是什么,该对象将保存来自 2 个或更多表的数据,这些表可用于填充视图(连接、自动映射器)?
3/ 有没有一种方法可以让我创建一个模型,我可以使用该模型从一个表单发布到多个表?
提前致谢。