asp.net mvc post model并指定小时

时间:2012-09-21 18:27:31

标签: jquery asp.net asp.net-mvc datetime

嗨我有一个模型,它有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);
    }
    

2 个答案:

答案 0 :(得分:0)

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

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

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

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

private DateTime _date 
public DateTime Date{
  set{
   this._date = value; 
    //ADD CODE TO ADD HOURS
   }
  get{return _date ;}
}

答案 1 :(得分:0)

我会使用您的第二个选项 - 更新操作。 理由:

  • 它在逻辑上属于控制器(视图应该没有与视图相关的计算)
  • 在C#
  • 中更容易做到
  • 它更直接&更容易维护

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

希望这有帮助。