public IHttpActionResult Put(int id, MenuViewModel item_viewModel)
        {
            if (!ModelState.IsValid)
                return BadRequest(ModelState);

            if (id != item_viewModel.Id)
                return BadRequest();

            //把資料庫中的那筆資料讀出來
            var item_db = db.Menus.Find(id);
            if (item_db == null)
            {
                return ResponseMessage(Request.CreateErrorResponse(HttpStatusCode.NotFound, "這筆資料已被刪除!"));
            }
            else
            {
                try
                {
                    item_db.Text = item_viewModel.Text;
                    item_db.ContentUrl = item_viewModel.ContentUrl;
                    item_db.CssClass = item_viewModel.CssClass;
                    item_db.ParentId = item_viewModel.ParentId;
                    db.Entry(item_db).OriginalValues["Timestamp"] = Convert.FromBase64String(item_viewModel.TimestampString);
                    db.SaveChanges();

                    //寫入AccessLog
                    MPAccessLog.WriteEntry(User.Identity.Name, AccessAction.Update, "Menu",
                        JsonConvert.SerializeObject(new { item_db.Id, item_db.Text, item_db.ContentUrl, item_db.ParentId }));
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (db.Menus.Find(id) == null)
                        throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.NotFound, "這筆資料已被刪除!"));
                    else
                        throw new HttpResponseException(Request.CreateErrorResponse(HttpStatusCode.Conflict, "這筆資料已被其他人修改!"));
                }
            }

            return Ok(ToMenuViewModel(item_db));
        }
        public IHttpActionResult Post(MenuViewModel item_viewModel)
        {
            if (!ModelState.IsValid)
            {
                return BadRequest(ModelState);
            }
            Menu item = new Menu { Id = item_viewModel.Id,
                                                 Text = item_viewModel.Text,
                                                 ContentUrl=item_viewModel.ContentUrl,
                                                 CssClass=item_viewModel.CssClass,
                                                 ParentId= item_viewModel.ParentId};
            db.Menus.Add(item);
            try
            {
                db.SaveChanges();

                //寫入AccessLog
                MPAccessLog.WriteEntry(User.Identity.Name, AccessAction.Create, "Menu", JsonConvert.SerializeObject(new { item.Id, item.Text,item.ContentUrl,item.ParentId }));
            }
            catch (DbEntityValidationException ex)
            {
                var entityError = ex.EntityValidationErrors.SelectMany(x => x.ValidationErrors).Select(x => x.ErrorMessage);
                var getFullMessage = string.Join("; ", entityError);
                var exceptionMessage = string.Concat(ex.Message, "errors are: ", getFullMessage);
                throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.BadRequest, exceptionMessage));
            }
            catch (DbUpdateException ex)
            {
                throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.BadRequest, ex.InnerException.Message));
            }

            return CreatedAtRoute("DefaultApi", new { id = item.Id }, ToMenuViewModel(item));
        }