0

嗨,我有一个模型,它具有 Datetime 类型的属性。当我发布表格时,日期属性小时的时间应该是 23:59。哪种方式有意义。

  • 创建自定义模型绑定器
  • 在操作方法中更新日期
  • 我正在使用 jQuery datetimepicker,它的格式是 mm.dd.yy,它不包括小时。

    [Authorize, HttpPost]
    public ActionResult Edit(int? id, OrderFormViewModel formModel)
    {
        var model = repository.GetShippingsById(id.Value);
    
        if (TryUpdateModel(model, "Order"))
        {
            model.Date = new DateTime(formModel.Order.Date.Year, formModel.Order.Date.Month, formModel.Order.Date.Day, 23, 59, 59);
    
            repository.Save();
            return RedirectToAction("Details", new { @id = model.Id });
        }
    
        return View(formModel);
    }
    
4

2 回答 2

0

如果问题只是您想添加小时(并且小时是常量值),您可以使用 ActionFilterAttribute,并在绑定设置小时的步骤中,因此在这种情况下,在您的肌动蛋白中,您将获得正确的日期值。

如果您使用自定义表单提交,您可以通过 JS 更新值,但在这种情况下,您应该注意本地化(如果它很重要,原因是)。

所以在我看来 ActionFilterAttribute 是更好的方法。

但是,如果您可以更新模型,则可以创建如下属性:

private DateTime _date 
public DateTime Date{
  set{
   this._date = value; 
    //ADD CODE TO ADD HOURS
   }
  get{return _date ;}
}
于 2012-09-21T18:33:56.973 回答
0

我会使用你的第二个选项 - 更新在行动。原因:

  • 它在逻辑上属于控制器(视图不应该有与视图相关的计算)
  • 在 C# 中做起来要简单得多
  • 它更直接且更易于维护

但像往常一样,您的问题没有正确答案。可用性,可维护性,易于理解......你知道其余的......

希望这可以帮助。

于 2012-09-21T18:40:47.753 回答