public async Task <IActionResult> OnPostAsync(string specificationId) { Guard.IsNullOrWhiteSpace(specificationId, nameof(specificationId)); Specification specification = await GetSpecification(specificationId); IsAuthorizedToEdit = await _authorizationHelper.DoesUserHavePermission(User, specification, SpecificationActionTypes.CanEditSpecification); if (!IsAuthorizedToEdit) { return(new ForbidResult()); } if (!string.IsNullOrWhiteSpace(CreateSubPolicyViewModel.Name)) { ApiResponse <Policy> existingPolicyResponse = await _specsClient.GetPolicyBySpecificationIdAndPolicyName(specificationId, CreateSubPolicyViewModel.Name); if (existingPolicyResponse.StatusCode != HttpStatusCode.NotFound) { this.ModelState.AddModelError($"{nameof(CreateSubPolicyViewModel)}.{nameof(CreateSubPolicyViewModel.Name)}", ValidationMessages.PolicyNameAlreadyExists); } } if (!ModelState.IsValid) { SpecificationName = specification.Name; SpecificationId = specificationId; FundingPeriodName = specification.FundingPeriod.Name; FundingPeriodId = specification.FundingPeriod.Id; PopulatePolicies(specification); return(Page()); } CreateSubPolicyModel policy = _mapper.Map <CreateSubPolicyModel>(CreateSubPolicyViewModel); policy.SpecificationId = specificationId; ApiResponse <Policy> newPolicyResponse = await _specsClient.CreatePolicy(policy); Policy newPolicy = newPolicyResponse.Content; return(Redirect($"/specs/policies/{specificationId}?operationType=SubpolicyCreated&operationId={newPolicy.Id}")); }