public static VMCampTopicShow GetTopic(Guid id) { using (var db = new GarfielderEntities()) { var dbm = db.Topics.Single(x => x.Id == id); if (dbm == null) { return(null); } var vm = new VMCampTopicShow(); vm.Id = dbm.Id; vm.Title = dbm.Title; vm.Slug = dbm.Slug; vm.Url = dbm.Url; vm.Grade = dbm.Grade; vm.Description = dbm.Description; vm.ContentX = dbm.ContentX; vm.Logo = dbm.Logo; vm.Groups = dbm.Groups.ToList(); vm.Tags = dbm.Tags.ToList(); //vm.Attachments = dbm.XFiles.ToList(); return(vm); }; }
[HttpPost, ValidateInput(false)]/* TODO:MVC3正式版时可以将ValidateInput注释掉,因为ContentX有AllowHtml属性 */ public ActionResult EditTopic(VMCampTopicShow obj) { if (this.ModelState.IsValid) { var dbm = default(Topic); using (var db = new GarfielderEntities()) { if (obj.IsNew) { obj.CreateAt = DateTime.Now; obj.Id = Guid.NewGuid(); dbm = new Topic(); dbm.CreatedAt = dbm.PublishedAt = obj.CreateAt; dbm.Published = true; dbm.Id = obj.Id; db.AddToTopics(dbm); } else { dbm = db.Topics.SingleOrDefault(x => x.Id == obj.Id); if (dbm == null) { obj.Error = true; obj.Msg = string.Format("Topic with id [{0}] has been deleted!", obj.Id); return(View(obj)); } } dbm.Title = obj.Title; dbm.ContentX = obj.ContentX; dbm.Slug = string.IsNullOrWhiteSpace(obj.Slug) ? obj.Title.CHSToPinyin("-") : obj.Slug.CHSToPinyin("-"); dbm.Description = dbm.ContentX; //save to db var msg = Topic.ValidateSlug(dbm.Slug, db); dbm.Slug = msg.Context["Slug"].ToString(); dbm.ModifiedAt = DateTime.Now; obj.Logo = dbm.Logo; db.Attach(CurrentUser); dbm.User = CurrentUser; db.SaveChanges(); //tags if (obj.TagID != null && obj.TagID.Count > 0) { dbm.Tags.Clear(); obj.TagID.ForEach(x => dbm.Tags.Add(db.Tags.Single(y => y.Id.Equals(x)))); } //groups if (obj.GroupID != null && obj.GroupID.Count > 0) { dbm.Groups.Clear(); obj.GroupID.ForEach( x => dbm.Groups.Add(db.Groups.Single(y => y.Id.Equals(x))) ); } //保存关系表 db.SaveChanges(); //update tags and groups obj.Groups = dbm.Groups.ToList(); obj.Tags = dbm.Tags.ToList(); }//using } ; return(View(obj)); }//edit topic