As you can see I have to populate the ViewModel with the List of Tags so that the dropdown can have all the options for the user to select.And I have to do this 2 times for the Create Action and 2 times for the Edit action.    [Authorize]public ActionResult Create(){    var tags = from i in _articleService.GetAllTags()               select new SelectListItem {Text = i.Name, Value = i.ID.ToString()};    var model = new CreateArticleViewModel {Tags = tags};    return View(model);}[HttpPost, Authorize]public ActionResult Create(CreateArticleViewModel model){    if (ModelState.IsValid)    {        try        {            var currentUser = _userService.GetByUserName(User.Identity.Name);            var tagIds = model.TagIds.Select(int.Parse);            var article = _articleService.Create(currentUser, model.Title, model.Body, tagIds);            return RedirectToAction(ViewArticle, new { id = article.ID });        }        catch (Exception ex)        {            ModelState.AddModelError(Error, ex.Message);        }    }    var tags = from i in _articleService.GetAllTags()               select new SelectListItem { Text = i.Name, Value = i.ID.ToString() };    model.Tags = tags;    return View(model);}[Authorize]public ActionResult Edit(int id){    var article = _articleService.GetById(id);    var tags = from tag in _articleService.GetAllTags().ToList()               select new SelectListItem { Text = tag.Name, Value = tag.ID.ToString(), Selected = article.HasTag(tag)};    var model = new CreateArticleViewModel {Title=article.Title, Body = article.Body, Tags = tags };    return View(model);}[HttpPost, Authorize]public ActionResult Edit(CreateArticleViewModel model){    if (ModelState.IsValid)    {        try        {            //handle article update        }        catch (Exception ex)        {            //Add ModelState error         }    }    var tags = from tag in _articleService.GetAllTags().ToList()               select new SelectListItem { Text = tag.Name, Value = tag.ID.ToString(), Selected = article.HasTag(tag)};    model.Tags= tags;    return View(model);}Is there a better way?
How can I avoid all this code duplication?
c#;asp.net mvc 3