public ActionResult CreatePost()
        {
            var currentUser = (User) Session["CurrentUser"];
            var taskList = new TaskList { Owner = currentUser };

            try
            {
                TryUpdateModel(taskList);

                // Check if a tasklist already exists with the same title.
                var existingTaskList = _taskListsService.Get(t => t.PartitionKey == currentUser.RowKey && t.Title == taskList.Title);

                if (existingTaskList != null)
                {
                    ViewBag.ValidationErrors = new List<ValidationResult> { new ValidationResult(string.Format("The taskList with the title '{0}' already exists.", taskList.Title)) };
                    return View(taskList);
                }

                if (taskList.IsValid())
                {
                    _taskListsService.Create(taskList);
                    return RedirectToAction("Index");
                }
                else
                {
                    ViewBag.ValidationErrors = taskList.GetValidationErrors();
                }
            }
            catch (Exception ex)
            {
                ViewBag.ValidationErrors = new List<ValidationResult> { new ValidationResult(string.Format("Create taskList exception: {0}", ex.Message)) };
            }

            return View(taskList);
        }
        public void ATaskListWithAnEmptyTittleIsInvalid()
        {
            // Arrange
            var user = new User() { PartitionKey = "windowsliveid", RowKey = "user.test-windowsliveid" };
            var invalidTitle = string.Empty;
            var taskList = new TaskList(invalidTitle, user) { PartitionKey = "user.test-windowsliveid", RowKey = ShortGuid.NewGuid().ToString() };

            // Act
            var validationResult = taskList.IsValid();

            // Assert
            Assert.IsFalse(validationResult);
        }
        public void ATaskListWithATittleLongerThan20CharactersIsInvalid()
        {
            // Arrange
            var user = new User() { PartitionKey = "windowsliveid", RowKey = "user.test-windowsliveid" };
            const string invalidTitle = "An invalid tittle with more than 10 characters";
            var taskList = new TaskList(invalidTitle, user) { PartitionKey = "user.test-windowsliveid", RowKey = ShortGuid.NewGuid().ToString() };

            // Act
            var validationResult = taskList.IsValid();

            // Assert
            Assert.IsFalse(validationResult);
        }
        public void ATaskListWithAllPropertiesValidIsValid()
        {
            // Arrange
            var user = new User() { PartitionKey = "windowsliveid", RowKey = "user.test-windowsliveid" };
            const string validTitle = "Test Title";
            var taskList = new TaskList(validTitle, user) { PartitionKey = "user.test-windowsliveid", RowKey = ShortGuid.NewGuid().ToString() };

            // Act
            var validationResult = taskList.IsValid();

            // Assert
            Assert.IsTrue(validationResult);
        }