【发布时间】:2015-08-24 02:58:48
【问题描述】:
对于某人来说,这将是一个简单的过程。我只是在学习MVC方式。
我有一个用户为我提供了一个工作时间段的开始时间 (start) 和持续时间 (LengthOfShift)。
我想在数据库中存储开始时间、持续时间以及计算的结束时间。
我想我明白模型是进行计算的最佳位置,在控制器或视图中进行计算并不是最佳实践。
我的简化模型和控制器如下。这似乎不起作用。
任何关于我做错了什么的指针?
型号
public class Shift
{
public int ShiftId { get; set; }
public string Code { get; set; }
public DateTime Start { get; set; }
public TimeSpan LengthOfShift { get; set; }
public DateTime Finish
{
get {
return Start.Add(LengthOfShift);
}
}
}
控制器
public class ShiftsController : Controller
{
private ApplicationDbContext db = new ApplicationDbContext();
// GET: Shifts
public ActionResult Index()
{
return View(db.Shifts.ToList());
}
// GET: Shifts/Create
public ActionResult Create()
{
return View();
}
// POST: Shifts/Create
// To protect from overposting attacks, please enable the specific properties you want to bind to, for
// more details see http://go.microsoft.com/fwlink/?LinkId=317598.
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include = "ShiftId,Code,Start,LengthOfShift")] Shift shift)
{
if (ModelState.IsValid)
{
db.Shifts.Add(shift);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(shift);
}
}
【问题讨论】:
-
它没有存储完成时间。
-
使它成为一个带有 getter 和 setter 的属性 -
public DateTime Finish { get; set; }并在控制器中根据Start和LengthOfShift属性设置值。 (但无论如何,您应该只在数据库中存储Start和LengthOfShiftORStart和Finish
标签: c# entity-framework asp.net-mvc-5