代码之家  ›  专栏  ›  技术社区  ›  Pharabus

ASP.NET MVC中的日期时间对象

  •  7
  • Pharabus  · 技术社区  · 15 年前

    是否有人使用MVC中的模型绑定成功地将2个文本框绑定到一个日期时间属性,我尝试了Scott的方法 http://www.hanselman.com/blog/SplittingDateTimeUnitTestingASPNETMVCCustomModelBinders.aspx 但不满意,因为这会停止具有相同名称的HTML字段和模型属性(因此,如果验证失败,则无法设置正确的CSS)。

    我当前的尝试是通过从bindingContext中删除valueProviderResult对象,并为从日期结果和tiem(使用scotts post中的.time约定)组成的键添加一个新的对象来修改这个问题,但是我有点担心直接使用bindingContext对象。

    我的想法是,我可以使用idateErrorInfo和vab propertyComparisonValidator来比较模型上的两个日期时间,其中一个需要晚于另一个,为此需要包含时间元素。

    1 回复  |  直到 12 年前
        1
  •  3
  •   Thomas Eyde    15 年前

    我使用一种不同的方法来处理两组不同的模型:我的视图模型将有两个属性,并对这些字段进行验证,而我的域模型将有一个日期时间。然后在绑定之后,我让视图模型更新域:

    public ActionResult Update(DateInput date)
    {
        if(date.IsValid)
        {
            var domain = someRepository.GetDomainObject(); // not exactly, but you get the idea.
            date.Update(domain);
        }
        // ...
    }
    
    public class DateInput
    {
        public string Date { get; set; }
        public string Time { get; set; }
    
        public void Update(DomainObject domain) { ... }
    }
    
    public class DomainObject
    {
        public DateTime SomePointInTime { get; set; }
    }