private static IEnumerable<Blog> DecodeBlogs(XElement element, Dictionary<string, Tag> tagsDict) { var result = new Collection<Blog>(); foreach (var blogXml in element.Elements("Blog")) { var newBlogger = new Blog() { Name = blogXml.Element("Name").Value, EmailAddress = blogXml.Element("Email").Value, Posts = new Collection<Post>() }; foreach (var postXml in blogXml.Element("Posts").Elements("Post")) { var content = postXml.Element("Content").Value; var trimmedContent = string.Join("\n", content.Split('\n').Select(x => x.Trim())); var newPost = new Post() { Blogger = newBlogger, Title = postXml.Element("Title").Value, Content = trimmedContent, Tags = postXml.Element("TagSlugs").Value.Split(',').Select(x => tagsDict[x.Trim()]).ToList() }; newBlogger.Posts.Add(newPost ); } result.Add( newBlogger); } return result; }
public ActionResult Create(Blog blog, ICreateService service) { if (!ModelState.IsValid) //model errors so return immediately return View(blog); var response = service.Create(blog); if (response.IsValid) { TempData["message"] = response.SuccessMessage; return RedirectToAction("Index"); } //else errors, so copy the errors over to the ModelState and return to view response.CopyErrorsToModelState(ModelState, blog); return View(blog); }