我是MVC.NET的新手(一般都是开发),我真的开始看到ViewModels带来的好处。
所以,我正在重构我的一个索引方法,将一组ViewModel对象发送到视图。但是,我不太确定实现这一目标的最佳方法。
基本上,我的域模型是UseCase
,我的ViewModel是UserGoalsStepViewModel
。我知道在我的UserGoalIndex
动作中我需要一个集合来包含我的ViewModel对象,每个对象都有它存在的每个UseCase
设置的属性,但是我不知道如何实现它。
非常感谢。
注意:我知道我可能正在使用AutoMapper
并且可能还有很多其他技术可以让生活变得更轻松,但是因为我是新手(时间紧迫!)我只是在寻找最简单的方法。
UseCase模型
public enum Level
{
Summary, UserGoal, SubGoal,
}
public class UseCase
{
public virtual int ID { get; set; }
//[Required]
public virtual int ProjectID { get; set; }
public virtual Project project { get; set; }
[Required]
public virtual int ActorID { get; set; }
[DisplayName("Actor")]
public virtual Actor actor { get; set; }
public virtual string Title { get; set; }
public virtual Level? Level { get; set; }
public virtual string Precondition { get; set; }
[DisplayName("Minimal Guarantee")]
public virtual string MinimalGuarantee { get; set; }
[DisplayName("Success Guarantee")]
public virtual string SuccessGuarantee { get; set; }
public virtual ICollection<Step> Steps { get; set; }
public virtual ICollection<Extension> Extensions { get; set; }
public virtual ICollection<Query> Queries { get; set; }
}
UserGoalViewModel (UseCase属性的子集)
public class UserGoalsStepViewModel
{
public enum GoalLevel
{
Summary, UserGoal, SubGoal,
}
public int ProjectId { get; set; }
//ActorId removed as SelectedActorId is what binds to model
//public int ActorId { get; set; }
[DisplayName("Actor Title")]
public SelectList ActorList { get; set; }
[DisplayName("Actor Title")]
public string ActorTitle { get; set; }
public int SelectedActorId { get; set; }
[DisplayName("Goal Title")]
public string GoalTitle { get; set; }
public GoalLevel Level { get; set; }
public UserGoalsStepViewModel ()
{
}
}