这个MVC动作应该被裁剪吗?

本文关键字:裁剪 MVC 这个 | 更新日期: 2023-09-27 18:18:37

我刚刚进入mvc 4(和mvc一般),我只是想知道这个动作代码是ok的还是应该再次剥离?

[HttpPost]
        public ActionResult Index(DashboardViewModel dbModel)
        {
            //retrieve latest resident order
            var residentOrder = db.ResidentOrders.GetById(dbModel.ResidentOrderID);
            if (residentOrder == null)
            {
                var order = db.Orders.GetById(dbModel.OrderID);
                var user = db.Users.GetUserByUsername(User.Identity.Name);
                residentOrder = new ResidentOrder()
                {
                    CreatedDate=DateTime.Now,
                    LastUpdateDate = DateTime.Now,
                    Litres=0,
                    Customer = user
                };
                order.ResidentOrders.Add(residentOrder);
                db.Commit();
            }
            //check to see if value has changed
            if (!dbModel.ResidentLitresOrdered.Equals(residentOrder.Litres))
            {
                //get new ordered value
                residentOrder.Litres = dbModel.ResidentLitresOrdered;
                db.Commit();
                //send an email just to notify in writing of the change.
                SendOwnOrderQtyUpdateNotification();
            }
            return View(dbModel);
        }

基本上,如果常驻订单不存在,那么我们创建一个,这是系统中唯一需要发生这种情况的地方。

我还应该将代码剥离到我的存储库中吗?

db是我的IUnitOfWork btw

这个MVC动作应该被裁剪吗?

我建议您创建一个"repository"来隐藏Controller操作的详细信息。"Upsert"方法可以让这个功能清晰而优雅地实现,对控制器隐藏细节。