public ActionResult Assigned(string isbn, string httpVerb) { var param = Session[SESSION_KEY] as SessionParameters; if (param == null) { return(View("BookError")); } ICourse course = new Course(param); string errorMessage = string.Empty; try { switch (httpVerb) { case "GET": var items = course.AssignedBooks(); var results = new BookItemResults { Items = items, CanEdit = param.CanEdit }; return(View("BookList", results)); case "POST": errorMessage = "Unable to assign book(" + isbn + ") to course."; course.AddBook(isbn); return(Json(new { Error = false })); case "DELETE": errorMessage = "Unable to remove book(" + isbn + ") from course."; course.RemoveBook(isbn); return(Json(new { Error = false })); } } catch (InvalidOperationException e) { if (httpVerb == "GET") { ViewBag.ErrorMessage = e.Message; return(View("BookError")); } Response.StatusCode = (int)HttpStatusCode.BadRequest; return(Json(new { Error = true, Message = errorMessage + e.Message })); } return(View("BookError")); }