asp.net MVC中的嵌套ViewModel类

时间:2012-02-21 05:15:34

标签: c# asp.net-mvc ado.net model viewmodel

我有四个MVC模型层域类。

namespace MvcMobile.Models.BusinessObject
{
public class Speaker
{
    public int SpeakerID { get; set; }
    public string SpeakerName { get; set; }
}
public class Tag
{
    public int TagID { get; set; }
    public string TagName { get; set; }
}
public class Seminar
{
    public string Seminar_Code { get; set; }
    public string Title { get; set; }
    public string Description { get; set; }
    public string Room { get; set; }        
}
public class Seminar_Detail
{
    public string Seminar_Code { get; set; }
    public int SpeakerID { get; set; }
    public int TagID { get; set; }
    public string DateAndTime { get; set; } 
}
}

我想通过使用这些类来进行CRUD操作。所以我创建了两个VeiwModel类。

namespace MvcMobile.ViewModel
{
public class Seminar_Root_ViewModel
{
    public Seminar_Subsidiary_ViewModel Seminars { get; set; }
    public List<Speaker> Speakers { get; set; }
    public List<Tag> Tags { get; set; }
}
public class Seminar_Subsidiary_ViewModel
{
    public Seminar Seminar { get; set; }
    public List<Seminar_Detail> Seminar_Detail { get; set; }
}
}

对于Controller layer,我认为我将使用Seminar_Root_ViewModel来制作整个CRUD操作流程。

我想问的是,这是正确的方式还是正确的方法? 如果你有更优雅的方式来制作model layer and ViewModel layer,请让我得到建议。

我们将不胜感激。

[更新]

我们假设我制作了主 - 细节表单设计。

Speaker and Tag只是下拉列表的查找表或类似的控件。
Seminar是主数据,Seminar_Detail是项目网格数据 所以对于这个场景,这个程序需要所有这些类。

如果我的想法错了,请告诉我。

1 个答案:

答案 0 :(得分:0)

我唯一能看到的是,如果您不打算重复使用Seminar_Subsidiary_ViewModel视图模型,可以跳过它。

如果您在另一个视图或ajax调用中需要这两个属性SeminarSeminar_Detail,那么完全可以进行这种分离。

就我个人而言,我不是班级名字的忠实粉丝,但这与这个问题毫无关系。