Exemplo n.º 1
0
        [HttpPost] //指定只有使用POST方法才可進入
        public ActionResult Create(Models.Product postback)
        {
            /*判斷如果Product資料驗證通過,則設定成功訊息至TempData,並且轉導致Index頁面。 */

            //如果資料驗証成功
            if (this.ModelState.IsValid)
            {
                using (Models.CartsEntities1 db = new Models.CartsEntities1())
                {
                    //將回傳資料 postback加入至products
                    db.Products.Add(postback);

                    //儲存異動資料
                    db.SaveChanges();

                    //設定成功訊息
                    TempData["ResultMessage"] = String.Format($"商品[{postback.Name}]成功建立");

                    //轉導product/Index頁面
                    return(RedirectToAction("Index"));
                }
            }

            //失敗訊息
            ViewBag.ResultMessage = "資料有誤,請檢查";

            //停留在Create頁面
            return(View(postback));
        }
Exemplo n.º 2
0
        //刪除是很重要的操作,如果使用者直接在網址列輸入網址就可以刪除的話,其實是很危險的一件事情,所以我們選擇使用Post來完成。
        public ActionResult Delete(int id)
        {
            using (Models.CartsEntities1 db = new Models.CartsEntities1())
            {
                //抓取Product.Id等於輸入id的資料
                var result = (from s in db.Products where s.Id == id select s).FirstOrDefault();

                //判斷此id是否有資料
                if (result != default(Models.Product))
                {
                    db.Products.Remove(result);

                    //儲存所有變更
                    db.SaveChanges();

                    //設定成功訊息並導回index頁面
                    TempData["ResultMessage"] = String.Format($"商品[{result.Name}]成功刪除");
                    return(RedirectToAction("Index"));
                }

                else
                {//如果沒有資料則顯示錯誤訊息並導回Index頁面
                    TempData["resultMessage"] = "指定資料不存在,無法刪除,請重新操作";
                    return(RedirectToAction("Index"));
                }
            }
        }
Exemplo n.º 3
0
        //Day25
        //OrderController 的Index() 定義如何將資料存入訂單資料庫(Order與OrderDetail資料表),
        //其中順序為先寫入Order後,
        //再寫入OrderDetail。
        public ActionResult Index(Models.OrderModel.Ship model)
        {
            if (this.ModelState.IsValid)
            {
                //取得目前購物車
                var CurrentCart = Models.Carts.Operation.GetCurrentCart();

                //取得目前登入使用者 Id
                var UserId = HttpContext.User.Identity.GetUserId();

                using (Models.CartsEntities1 db = new Models.CartsEntities1())
                {
                    //建立Order物件
                    var order = new Models.Order()
                    {
                        UserId          = UserId,
                        ReceiverName    = model.ReceiverName,
                        ReceiverPhone   = model.ReceiverPhone,
                        ReceiverAddress = model.ReceiverAddress
                    };


                    // 加入 Order 資料表後,儲存變更
                    db.Orders.Add(order);
                    db.SaveChanges();


                    //取得購物車中的 OrderDeatil 物件
                    var orderDetails = CurrentCart.ToOrderDetailList(order.Id);

                    //將 OrderDetails 物件,加入OrderDetail資枓表後,儲存變更。
                    db.OrderDetails.AddRange(orderDetails);
                    db.SaveChanges();
                }
                return(Content("訂購成功"));
            }

            return(View());
        }
Exemplo n.º 4
0
        [Authorize] // 登入會員才能留言
        public ActionResult AddComment(int id, string content)
        {
            // 取得目前登入使用者 Id
            var UserId = HttpContext.User.Identity.GetUserId();

            var CurrentDateTime = DateTime.Now;

            var Comment = new Models.ProductComment()
            {
                ProductId  = id,
                Content    = content,
                UserId     = UserId,
                CreateDate = CurrentDateTime
            };

            using (Models.CartsEntities1 db = new Models.CartsEntities1())
            {
                db.ProductComments.Add(Comment);
                db.SaveChanges();
            }
            return(RedirectToAction("Details", new { id = id }));
        }
Exemplo n.º 5
0
        /*由於原本Index頁面的Delete按鈕是使用Get操作,此將Delete()方法改為Post,所以伺服器找不到相對應的方法而產生錯誤。
         * 故須到Index頁面,
         * 將原本使用ActionLink的刪除按鈕改為使用BeginForm*/
        public ActionResult Edit(Models.Product postback)
        {
            //判斷使用者輸入資料是否正確
            if (this.ModelState.IsValid)
            {
                using (Models.CartsEntities1 db = new Models.CartsEntities1())
                {
                    //抓取Product.Id等於回傳postback.ID的資枓
                    var result = (from s in db.Products where s.Id == postback.Id select s).FirstOrDefault();

                    //儲存使用者變更資料
                    result.Name            = postback.Name;
                    result.Price           = postback.Price;
                    result.PublishDate     = postback.PublishDate;
                    result.Quantity        = postback.Quantity;
                    result.Status          = postback.Status;
                    result.CategoryId      = postback.CategoryId;
                    result.DefaultImageId  = postback.DefaultImageId;
                    result.Description     = postback.Description;
                    result.DefaultImageURL = postback.DefaultImageURL;//Edit() Action 內新增儲存DefaultImageURL的程式碼

                    //儲存所有變更
                    db.SaveChanges();

                    //設定成功訊息並導回index頁面
                    TempData["ResultMessage"] = String.Format($"商品[{postback.Name}]成功編輯");
                    return(RedirectToAction("Index"));
                }
            }

            //如果資料不正確則導向自己(Edit頁面)
            else
            {
                return(View(postback));
            }
        }