public async Task <IActionResult> AddTag(TagViewModel tagViewModel, int questionId) { if (ModelState.IsValid) { try { var question = await _repository.GetQuestionByIdWithoutDetailsAsync(questionId); if (question == null) { Response.StatusCode = 404; ViewData["ErrorMessage"] = "404 Resource not found."; return(View("Error")); } var tag = await _repository.GetTagByIdAsync(tagViewModel.Id); if (tag == null) { Tag newTag = _mapper.Map <TagViewModel, Tag>(tagViewModel); tag = await _repository.AddTagAsync(newTag); } await AttachQuestionTag(tag.Id, questionId); return(RedirectToAction("Details", "Questions", new { questionId = questionId })); } catch (DbUpdateException dbex) { ViewData["ErrorMessage"] = "DB issue - " + dbex.Message; return(View("Error")); } catch (Exception ex) { ViewData["ErrorMessage"] = ex.Message; return(View("Error")); } } ViewData["questionId"] = questionId.ToString(); return(View("AddTag", tagViewModel)); }