asp.net-mvc – 在MVC4中为ViewModel设置默认值的适当方法?
发布时间:2020-09-19 13:28:18  所属栏目:asp.Net  来源:互联网 
            导读:我有一个包含以下内容的viewModel: public class CreateCardViewModel { [HiddenInput(DisplayValue = false)] public int SetId { get; set; } [Required] public IListSide Sides { g
                
                
                
            | 
                         我有一个包含以下内容的viewModel: public class CreateCardViewModel
    {
        [HiddenInput(DisplayValue = false)]
        public int SetId { get; set; }
        [Required]
        public IList<Side> Sides { get; set; }
        [Required]
        public int Stage { get; set; }
        [Required]
        [DataType(DataType.Date)]
        [HiddenInput(DisplayValue = false)]
        public DateTime DateCreated { get; set; }
        [Required]
        public bool IsReady { get; set; }
    } 
 模型如下: public class Card
    {
        public virtual int CardId { get; set; }
        // belongs to a Set
        public virtual int SetId { get; set; }
        public virtual Set Set { get; set; }
        // has Sides
        public virtual IList<Side> Sides { get; set; }
        // is in a certain Stage
        public virtual int Stage { get; set; }
        // is ready to study
        public virtual bool IsReady { get; set; }
        public virtual DateTime DateCreated { get; set; }
    } 
 如何为DateCreated设置默认值? 如果我想在创建卡片时在侧面插入空白边,该方法会改变吗? 解决方法您可以在构造函数中设置默认值:public CreateCardViewModel()
{
    DateCreated = DateTime.Now;
    Sides = new List<Side> { new Side() };
} 
 警告:从单元测试角度来看使用DateTime.Now存在问题.如果您正在对ViewModel创建进行单元测试,并且需要能够验证创建的日期是否设置为已知值,则可以查看为时间创建单独的概念,如Ayende’s blog中所述.您基本上创建了一个静态函数,SystemTime,您可以在测试中将其设置为已知值.如果未设置,则默认为DateTime.Now: public static class SystemTime
{
    public static Func<DateTime> Now = () => DateTime.Now;
} 
 然后您的构造函数代码变为: public CreateCardViewModel()
{
    DateCreated = SystemTime.Now();
    Sides = new List<Side> { new Side() };
} 
 如果您需要将时间实际设置为已知值,请执行以下操作: SystemTime.Now = () => new DateTime(2013,2,11,17,41,12); (编辑:莱芜站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!  | 
                  
推荐文章
            站长推荐
            - WPF的Page介绍及Page Window Frame 之间的链接使
 - asp.net-mvc-3 – 用于在ASP.NET MVC3中使用Grid
 - asp.net-mvc – AJAX POST到MVC Controller显示3
 - asp.net-mvc – 如何将复选框绑定到视图模型的Li
 - asp.net-identity – UseOAuthBearerTokens vs U
 - asp.net-mvc – 类库中的控制器和视图
 - 如何通过Asp.net WebAPI中的异常过滤器传递内容?
 - asp.net – OWIN第二天拒绝身份验证cookie
 - asp.net-mvc – ASP.Net MVC中的自我AJAX更新部分
 - 一个简答的Access下的分页asp.net代码
 
热点阅读
            