public ActionResult EditClip(EditClipModel clipToEdit, HttpPostedFileBase image)
        {
            //get commondata
            clipToEdit.clip.Id = Convert.ToInt32(ModelState["clip.Id"].Value.AttemptedValue);
            clipToEdit.clip.Title = ModelState["clip.Title"].Value.AttemptedValue;
            clipToEdit.clip.Description = ModelState["clip.Description"].Value.AttemptedValue;
            clipToEdit.clip.Url = ModelState["clip.Url"].Value.AttemptedValue;

            //get categories
            clipToEdit.clip.Categories.Clear();
            string[] selectedcats = ModelState["AllCategories"].Value.AttemptedValue.Split(new char[] { ',' });
            List<Category> AllCategories = repository.Categories.Distinct().ToList();
            for (int i=0; i<AllCategories.Count(); i++)
            {
                if (selectedcats[i]=="true") clipToEdit.clip.Categories.Add(AllCategories[i]);
            }

            if (image != null)
            {
                clipToEdit.clip.ImageMimeType = image.ContentType;
                clipToEdit.clip.ImageData = new byte[image.ContentLength];
                image.InputStream.Read(clipToEdit.clip.ImageData, 0, image.ContentLength);
            }

            repository.SaveClip(clipToEdit.clip);
            TempData["message"] = string.Format("{0} has been saved", clipToEdit.clip.Title);
            return RedirectToAction("ClipEditor");
        }
        public ViewResult EditClip(int Id)
        {
            EditClipModel clipToEdit = new EditClipModel();
            //get clip from db to edit
            clipToEdit.clip = repository.Clips.FirstOrDefault(clipitem => clipitem.Id == Id); ;

            //get all categories to choose
            foreach (var cat in repository.Categories.Distinct().ToList())
            {
                 clipToEdit.AllCategories.Add( new SelectListItem { Text = cat.Title, Selected = false, Value = cat.Id.ToString() });
            }
                //mark each category as checked if clip is belong to the category
            clipToEdit.AllCategories.ToList().ForEach(
                item => item.Selected = clipToEdit.clip.Categories.ToList().Exists(clipcat => clipcat.Id.ToString() == item.Value)
            );

            return View(clipToEdit);
        }