public bool IsValid(ModelStateDictionary modelState) { modelState.Clear(); if (Type == TwoFactorType.None) { modelState.AddModelError("", "Please select a TFA option"); return(false); } if (Type == TwoFactorType.EmailCode) { if (string.IsNullOrEmpty(DataEmail) || !ValidationHelpers.IsValidEmailAddress(DataEmail)) { modelState.AddModelError("", string.Format("'{0}' is not a valid email address.", DataEmail)); return(false); } } if (Type == TwoFactorType.GoogleCode) { if (!GoogleData.IsValid) { modelState.AddModelError("", "An Unknown error occured."); return(false); } } if (Type == TwoFactorType.PinCode) { if (string.IsNullOrEmpty(DataPin) || DataPin.Length < 4 || DataPin.Length > 8 || !DataPin.All(char.IsDigit)) { modelState.AddModelError("", "The pin must be between 4 and 8 digits."); return(false); } } return(true); }
public void ClearModelStateOnAdd(ModelStateDictionary modelState, UserNewModel model) { modelState.Clear(); #region CNP if (!Validation.CNPValidator(model.CNP)) { modelState.AddModelError("New.CNP", Resource.InvalidCNP); } else if (_usersRepository.NotUniqueCNP(model.CNP)) { modelState.AddModelError("New.CNP", Resource.NotUniqueCNP); } #endregion #region User State if (model.RoleBtnList != null && model.RoleBtnList.SelectedValues != null) { var selected = model.RoleBtnList.SelectedValues; if (selected == UserRoles.Patient && (model.State == null || model.State.SelectedValues == null)) { modelState.AddModelError("New.State", Resource.RequiredField); } } #endregion }
private void SetModelStateIsValid(bool isValid = true) { ModelStateDictionary modelState = (_viewComponent as ViewComponent)?.ModelState; if (modelState == null) { PropertyInfo propertyInfo = _viewComponent.GetType() .GetProperties(BindingFlags.Public | BindingFlags.Instance | BindingFlags.GetProperty) .SingleOrDefault(p => p.Name == "ModelState"); if (propertyInfo != null && propertyInfo.PropertyType == typeof(ModelStateDictionary)) { modelState = (ModelStateDictionary)propertyInfo.GetValue(_viewComponent); } if (modelState == null) { throw new ActionTestException( $"{_viewComponent.GetType().FullName} does not have a public \"ModelState\" ModelStateDictionary property."); } } modelState.Clear(); if (!isValid) { modelState.AddModelError("key", "message"); } }
public void StartRegistrationForFamilyMember(int id, ModelStateDictionary modelState) { modelState.Clear(); // ensure we pull form fields from our model, not MVC's HistoryAdd("Register"); int index = List.Count - 1; var p = LoadExistingPerson(id, index); if(p.NeedsToChooseClass()) return; p.ValidateModelForFind(modelState, id, selectFromFamily: true); if (!modelState.IsValid) return; List[index] = p; if (p.ManageSubscriptions() && p.Found == true) return; if (p.org != null && p.Found == true) { if (!SupportMissionTrip) p.IsFilled = p.org.RegLimitCount(DbUtil.Db) >= p.org.Limit; if (p.IsFilled) modelState.AddModelError(this.GetNameFor(mm => mm.List[List.IndexOf(p)].Found), "Sorry, but registration is filled."); if (p.Found == true) p.FillPriorInfo(); return; } if (p.org == null && p.ComputesOrganizationByAge()) modelState.AddModelError(this.GetNameFor(mm => mm.List[id].Found), p.NoAppropriateOrgError); }
/// <summary> /// 清除全部Error,实际上可以用 modelState.Clear();加在这里只是保持完整性罢了 /// </summary> /// <param name="modelState"></param> public static void ClearAllError(ModelStateDictionary modelState) { modelState.Clear(); //foreach (var key in modelState.Keys) //{ // ClearError(modelState, key); //} }
public static void ToModelErrors(this ValidationResult validationResult, ModelStateDictionary modelState) { modelState.Clear(); foreach (var validationError in validationResult.Errors) { modelState.AddModelError(validationError.Property, validationError.Message); } }
public static void ValidateModel(this ModelStateDictionary modelState, IList <ValidationError> validationErrors, Type type = null) { modelState.Clear(); foreach (var error in validationErrors) { modelState.AddModelError(type == null ? error.TypeName : type.Name + "." + error.PropertyName, error.ErrorMessage); } }
/// <summary> /// Clears and add new list of model state dictionary errors /// </summary> /// <remarks></remarks> public static void AddModelError(this ModelStateDictionary item, IEnumerable <string> errors) { item.Clear(); foreach (var Error in errors) { item.AddModelError("Error", Error); } }
public void StartRegistrationForFamilyMember(int id, ModelStateDictionary modelState) { modelState.Clear(); // ensure we pull form fields from our model, not MVC's HistoryAdd("Register"); int index = List.Count - 1; var p = LoadExistingPerson(id, index); if (p.NeedsToChooseClass()) { modelState.AddModelError("fammember-" + p.PeopleId, "Please make selection above"); return; } if (p.ComputesOrganizationByAge()) { if (p.org == null) { modelState.AddModelError("fammember-" + p.PeopleId, "No Appropriate Org"); return; } } List[index] = p; p.ValidateModelForFind(modelState, id, selectFromFamily: true); if (!modelState.IsValid) { return; } if (p.ManageSubscriptions() && p.Found == true) { return; } if (p.org != null && p.Found == true) { if (!SupportMissionTrip) { p.IsFilled = p.org.RegLimitCount(DbUtil.Db) >= p.org.Limit; } if (p.IsFilled) { modelState.AddModelError(this.GetNameFor(mm => mm.List[List.IndexOf(p)].Found), "Sorry, but registration is filled."); } if (p.Found == true) { p.FillPriorInfo(); } return; } if (p.org == null && p.ComputesOrganizationByAge()) { modelState.AddModelError(this.GetNameFor(mm => mm.List[id].Found), p.NoAppropriateOrgError); } }
public bool modelStateIsValidAfterReRunValidationOnComplexAttributes( ModelStateDictionary modelState, IValidatableObject model) { modelState.Clear(); var errors = model.Validate(new ValidationContext(model, null, null)); foreach(var error in errors) foreach(var memberName in error.MemberNames) modelState.AddModelError(memberName, error.ErrorMessage); return modelState.IsValid; }
private string ClearPaymentInfo(ModelStateDictionary modelState) { CreditCard = string.Empty; Expires = string.Empty; Routing = string.Empty; Account = string.Empty; CVV = string.Empty; modelState.Clear(); return("Please insert your payment information."); }
public static bool TryValidateRequiredParameter(this ModelStateDictionary modelState, string value, string parameterName) { modelState.Clear(); if (value.IsNullOrWhiteSpace()) { modelState.TryAddModelError(parameterName, $"The {parameterName} parameter is required."); return(false); } return(true); }
/// <summary> /// If the IsRefresh QueryString parameter is true it clears the ModelStateDictionary and returns false else behaves exactly as ModelState.IsValid property /// </summary> /// <param name="modelStateDictionary"></param> /// <returns></returns> public static bool IsValidOrRefresh(this ModelStateDictionary modelStateDictionary) { bool isRefresh = HttpContext.Current.Request["IsRefresh"].ConvertTo <bool>(false, true); if (isRefresh) { modelStateDictionary.Clear(); } return(!isRefresh && modelStateDictionary.IsValid); }
private ManageGivingModel ClearPaymentInfo(ManageGivingModel m, ModelStateDictionary modelState) { m.CreditCard = string.Empty; m.Expires = string.Empty; m.Routing = string.Empty; m.Account = string.Empty; m.CVV = string.Empty; modelState.Clear(); modelState.AddModelError("form", "Please insert your payment information."); return(m); }
public async Task <bool> ValidateAsync(FixtureValidator validator, ModelStateDictionary modelState) { await validator.CheckAsync(CancellationToken.None); foreach (var fact in validator.GetFailedFacts()) { if (fact.Exception != null) { throw new Exception(null, fact.Exception); } if (fact.Type == FactType.Critical || fact.Type == FactType.Error) { if (fact.FieldNames.Contains(nameof(FixtureValidator.Model.PlannedStart))) { modelState.AddModelError(nameof(EditFixtureViewModel.MatchDate), fact.Message); modelState.AddModelError(nameof(EditFixtureViewModel.MatchTime), fact.Message); } else { foreach (var fieldName in fact.FieldNames) { modelState.AddModelError(fieldName, fact.Message); } } } else { modelState.AddModelError(string.Empty, fact.Message); // Validator generates FactType.Warning only, if no errors exist IsWarning = true; } } // to override warnings, form fields must be unchanged since last post var newHash = ComputeInputHash(); if (IsWarning && OverrideWarnings && newHash == Hash) { modelState.Clear(); IsWarning = false; } if (!modelState.IsValid) { // Show checkbox unchecked OverrideWarnings = false; // Set hash field value to latest form fields content Hash = newHash; } return(modelState.IsValid); }
public void UpdateValidationState(ModelStateDictionary modelState, string prefix) { modelState.Clear(); var validator = new ViewModelValidator(); //validator.Validate(Model, ValidationResults).AddToModelState(modelState, prefix); var validator1 = new ViewModelValidator1(); //validator1.Validate(Model, ValidationResultsNext).AddToModelState(modelState, prefix); var validator2 = new ViewModelValidator2(); //validator2.Validate(Model, ValidationResultsAll).AddToModelState(modelState, prefix); }
public static void ClearValid(this ModelStateDictionary modelState, bool keepFirstRow) { var errors = modelState.Where(ms => (ms.Value.Errors != null && ms.Value.Errors.Count > 0) || (keepFirstRow && ms.Key.StartsWith("GridData[0]"))).ToList(); modelState.Clear(); foreach (var error in errors) { foreach (var v in error.Value.Errors) { modelState.AddModelError(error.Key, v.ErrorMessage); } } }
private Person SetPerson(PersonEditModel personEditModel, SeminarPerson seminarPerson, ModelStateDictionary modelState, Person person = null, HttpPostedFileBase profilePic = null) { modelState.Clear(); person = person ?? personEditModel.Person; // copy all the fields Mapper.Map(personEditModel, person); SetAddresses(person, personEditModel.Addresses, ModelState); SetContacts(person, personEditModel.Contacts, ModelState); if (seminarPerson != null) { SetCommodities(seminarPerson, personEditModel.Commodities); if (personEditModel.Firm != null || !string.IsNullOrEmpty(personEditModel.FirmName)) { seminarPerson.Firm = personEditModel.Firm ?? new Firm(personEditModel.FirmName, personEditModel.FirmDescription) { WebAddress = personEditModel.FirmWebAddress }; } if (personEditModel.Title != null) //Not sure what is happening here. This may fix it. { seminarPerson.Title = personEditModel.Title; } } // deal with the image)) if (profilePic != null) { // blank out existing image files person.OriginalPicture = null; person.MainProfilePicture = null; person.ThumbnailPicture = null; // read the file and set the original picture var reader = new BinaryReader(profilePic.InputStream); person.OriginalPicture = reader.ReadBytes(profilePic.ContentLength); person.ContentType = profilePic.ContentType; } // run the validation person.TransferValidationMessagesTo(modelState); return(person); }
public async Task <bool> ValidateAsync(VenueValidator venueValidator, ModelStateDictionary modelState, CancellationToken cancellationToken) { await venueValidator.CheckAsync(cancellationToken); foreach (var fact in venueValidator.GetFailedFacts()) { if (fact.Exception != null) { throw new Exception(null, fact.Exception); } if (fact.Type == FactType.Critical || fact.Type == FactType.Error) { foreach (var fieldName in fact.FieldNames) { modelState.AddModelError(string.Join('.', Venue.HtmlFieldPrefix, fieldName), fact.Message); } } else { modelState.AddModelError(string.Empty, fact.Message); // Validator generates FactType.Warning only, if no errors exist IsWarning = true; } } // The Hash is re-calculated with the new submitted values. // We have to compare to the original hidden Hash field value, // because to override warnings, form fields must be unchanged since last post var newHash = ComputeInputHash(); if (IsWarning && OverrideWarnings && newHash == Hash) { modelState.Clear(); IsWarning = false; } if (!modelState.IsValid) { // Show checkbox unchecked OverrideWarnings = false; // Set hash field value to latest form fields content Hash = newHash; } return(modelState.IsValid); }
public ModelStateDictionary ValidarCriacaoFornecedor() { ModelStateDictionary ModelState = new ModelStateDictionary(); ModelState.Clear(); if (!string.IsNullOrEmpty(Email)) { if (!Validacao.ValidarEmail(Email)) { ModelState.AddModelError("Contato.Email", "O e-mail informado não está em um formato válido."); } } if (Categoria == 0) { ModelState.AddModelError("Categoria", "Informe a Categoria!"); } if (TipoFornecedor == 1 || TipoFornecedor == 3) { if (CNPJ == null) { ModelState.AddModelError("CNPJ", "CNPJ/CPF Obrigatório"); } else { if (TipoFornecedor == 1) { if (!Validacao.ValidaCNPJ(CNPJ.Replace(".", "").Replace("/", "").Replace("-", "").Replace("_", ""))) { ModelState.AddModelError("CNPJ", "CNPJ Inválido"); } } else { if (!Validacao.ValidaCPF(CNPJ.Replace(".", "").Replace("/", "").Replace("-", "").Replace("_", ""))) { ModelState.AddModelError("CNPJ", "CPF Inválido"); } } } } return(ModelState); }
public static ModelStateDictionary WithoutFormName(this ModelStateDictionary modelstate) { ModelStateDictionary newMState = new ModelStateDictionary(modelstate); newMState.Clear(); foreach (var key in modelstate.Keys) { var errors = String.Join(", ", modelstate[key].Errors .Select(e => e.ErrorMessage) .ToList()); newMState.AddModelError(NormalizeKeyName(key.ToString()), errors); } return(newMState); }
/// <summary> /// Set modelState within current errors /// </summary> /// <param name="modelState"></param> /// <param name="ressources"></param> /// <param name="errors"></param> protected void SetModelState(ModelStateDictionary modelState, LanguageDictionary ressources, Errors errors) { modelState.Clear(); foreach (KeyValuePair <string, List <Error> > field in errors.Fields) { foreach (Error error in field.Value) { modelState.AddModelError(field.Key, ressources.GetLabel(ressources.DefaultLanguage, error.Message, error.Parameters)); } } foreach (Error error in errors.Global) { modelState.AddModelError("", ressources.GetLabel(ressources.DefaultLanguage, error.Message, error.Parameters)); } }
public static void FromContext(this ModelStateDictionary modelState, MappingContext context, bool append = false) { if (!append) { modelState.Clear(); } if (context.GlobalErrors.Count > 0) { foreach (var p in context.GlobalErrors) { foreach (var v in p.Value) { modelState.AddModelError(p.Key, v, context.GlobalInputs.TryGetC(p.Key)); } } } }
public static void FromDictionary(this ModelStateDictionary modelState, Dictionary <string, List <string> > errors, NameValueCollection form, bool append = false) { if (!append) { modelState.Clear(); } if (errors != null) { foreach (var p in errors) { foreach (var v in p.Value) { modelState.AddModelError(p.Key, v, form[p.Key]); } } } }
public static async Task <bool> TryValidateObjectAsync(this ModelStateDictionary modelState, object data) { modelState.Clear(); (var isValid, var results) = await ValidateObjectResultsAsync(data); if (!isValid) { foreach (var result in results) { foreach (var memberName in result.MemberNames) { modelState.TryAddModelError(memberName.ToCamelCase(), result.ErrorMessage); } } } return(isValid); }
public override void HandleRequest() { IsValid = modelState.IsValid; base.HandleRequest(); if (IsValid) { // NOTE: Must clear the model state in order to bind // the @Html helpers to the new model values modelState.Clear(); } else { foreach (KeyValuePair <string, string> item in ValidationErrors) { modelState.AddModelError(item.Key, item.Value); } } }
public static Result<T> CreateErrorResult<T>(ModelStateDictionary modelState, T data = default(T)) { var result = new Result<T>(false, data); foreach (var state in modelState) { foreach (var error in state.Value.Errors) { if (!string.IsNullOrEmpty(error.ErrorMessage)) { result.AddMessage(state.Key, error.ErrorMessage); } else if (error.Exception != null) { result.AddMessage(state.Key, error.Exception.Message); } } } modelState.Clear(); return result; }
public void Add_Even_If_Not_Error_Result() { var modelState = new ModelStateDictionary(); var result = new Result(HttpStatusCode.OK, "foo"); modelState.AddModelErrors(result); Assert.AreEqual(1, modelState.Count); modelState.Clear(); var errors = new ErrorBuilder() .Add("a", null, "a") .Add("b", null, "b") .GetErrors(); result = new Result(HttpStatusCode.OK, errors); modelState.AddModelErrors(result); Assert.AreEqual(errors.Count, modelState.Sum(m => m.Value.Errors.Count)); }
public static void ApplyCustomValidationSummaryOrdering(this ModelStateDictionary modelState, IEnumerable <string> modelStateKeys) { var result = new ModelStateDictionary(); foreach (string key in modelStateKeys) { if (modelState.ContainsKey(key) && !result.ContainsKey(key)) { result.Add(key, modelState[key]); } } foreach (string key in modelState.Keys) { if (!result.ContainsKey(key)) { result.Add(key, modelState[key]); } } modelState.Clear(); modelState.Merge(result); }
//методы добавляют к ModelStateDictionary ошибки валидации для различных моделей void ValidateControllerCorrect_VM(ControllerCorrect_VM model, ModelStateDictionary state) { state.Clear(); //должен быть введен заводской номер if (model.SerNo == null) state.AddModelError("1", "Пожалуйста введите заводской номер!"); //должен быть введен инвентарный номер if (model.InvNo == null) state.AddModelError("2", "Пожалуйста введите инвентарный номер!"); //проверяем длину инвентарного номера и заводского номера - должны быть меньше 30 символов if ((model.InvNo != null && model.InvNo.Length > 30) || (model.SerNo != null && model.SerNo.Length > 30)) { state.AddModelError("DateError", "Ошибка: слишком длинный номер!"); } //проверяем введенный пользователем год int intYear = 0; try { if (model.ProdYear != null) //если null, то значит пользователь ничего не ввел в поле (допустимо) { intYear = Int32.Parse(model.ProdYear); //если ввели совсем уж хуйню, то не распарсит if (intYear != 0 && !(intYear > 1980 && intYear <= DateTime.Now.Year)) //год должен быть в интервале 1980 - текущий год, если год = 0 то пользователь его не указал просто { state.AddModelError("DateError", "Введен недействительный год производства!"); } } else { state.AddModelError("DateError", "Пожалуйста введите год производства!"); } } catch { //нераспарсил state.AddModelError("DateError", "Введен недействительный год производства!"); } //Предварительная проверка, что контроллер где то установлен if (!dataRepository.Asystems.Where(aS => aS.AS_Controller == model.CID).Any()) { //контроллер нигде не установлен state.AddModelError("MountError", "Контроллер не установлен ни на одном объекте!"); } //Примечание должно быть менее 1000 символов else if (model.Comment!=null&&model.Comment.Length > 1000) { state.AddModelError("", "Ошибка: примечание слишком длинное!"); } }
public void validarUsuario(UsuarioViewModel user, ModelStateDictionary modelState) { modelState.Clear(); string LetrasRegex = @"^[a-zA-Z\s]+$"; string NumerosRegex = @"^(0|[1-9]\d*)$"; string EmailRegex = @"^(('[\w-\s]+')|([\w-]+(?:\.[\w-]+)*)|('[\w-\s]+')([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)"; if (string.IsNullOrEmpty(user.Nombre)) { modelState.AddModelError("Nombre", "El nombre es campo obligatorio!"); } if (string.IsNullOrEmpty(user.Nombre) || user.Nombre.Length <= 0) { modelState.AddModelError("Nombre", "Tiene que tener al menos un caracter"); } if (string.IsNullOrEmpty(user.Nombre) || user.Nombre.Length > 100) { modelState.AddModelError("Nombre", "No puede tener mas de 100 caracteres"); } bool isNombreValid = string.IsNullOrEmpty(user.Nombre) || Regex.IsMatch(user.Nombre, LetrasRegex); if (!isNombreValid) { modelState.AddModelError("Nombre", "Solo se aceptan letras"); } if (string.IsNullOrEmpty(user.ApellidoP)) { modelState.AddModelError("ApellidoP", "El apellido paterno es obligatorio!"); } if (string.IsNullOrEmpty(user.ApellidoP) || user.ApellidoP.Length <= 0) { modelState.AddModelError("ApellidoP", "Tiene que tener al menos un caracter"); } if (string.IsNullOrEmpty(user.ApellidoP) || user.ApellidoP.Length > 100) { modelState.AddModelError("ApellidoP", "No puede tener mas de 100 caracteres"); } bool isApellidoPValid = string.IsNullOrEmpty(user.ApellidoP) || Regex.IsMatch(user.ApellidoP, LetrasRegex); if (!isApellidoPValid) { modelState.AddModelError("ApellidoP", "Solo se aceptan letras"); } if (string.IsNullOrEmpty(user.ApellidoM)) { modelState.AddModelError("ApellidoM", "El apellido materno es obligatorio!"); } if (string.IsNullOrEmpty(user.ApellidoM) || user.ApellidoM.Length <= 0) { modelState.AddModelError("ApellidoM", "Tiene que tener al menos un caracter"); } if (string.IsNullOrEmpty(user.ApellidoM) || user.ApellidoM.Length > 100) { modelState.AddModelError("ApellidoP", "No puede tener mas de 100 caracteres"); } bool isApellidoMValid = string.IsNullOrEmpty(user.ApellidoM) || Regex.IsMatch(user.ApellidoM, LetrasRegex); if (!isApellidoPValid) { modelState.AddModelError("ApellidoP", "Solo se aceptan letras"); } if (string.IsNullOrEmpty(user.Email)) { modelState.AddModelError("Email", "El Email es obligatorio!"); } if (string.IsNullOrEmpty(user.Email) || user.Email.Length <= 0) { modelState.AddModelError("Email", "Tiene que tener al menos un caracter"); } if (string.IsNullOrEmpty(user.Email) || user.Email.Length > 100) { modelState.AddModelError("Email", "No puede tener mas de 100 caracteres"); } bool isEmailValid = string.IsNullOrEmpty(user.Email) || Regex.IsMatch(user.Email, EmailRegex); if (!isEmailValid) { modelState.AddModelError("Email", "Ingrese un Email Correcto "); } if (existeUserC(user.Email)) { modelState.AddModelError("Email", "Ya existe un usuario con el mismo email"); } if (string.IsNullOrEmpty(user.Password)) { modelState.AddModelError("Password", "La contraseña es obligatorio!"); } }
public void Clear() { _modelState.Clear(); }
void ValidateCreporderDetails_VM(CreporderDetails_VM model, ModelStateDictionary state) { state.Clear(); //дата обнаружения неисправности //должна быть введена, должна иметь правильный формат, не должна быть позже текущей даты, не должна быть раньше 2-х лет DateTime tempDate; try { if (model.RevealedDate != null) { tempDate = DateTime.Parse(model.RevealedDate); //если ввели некоректные данные, то не распарсит if (tempDate>DateTime.Now) { state.AddModelError("", "Дата обнаружения неисправности позже текущей даты!"); } else if(tempDate<DateTime.Now.AddYears(-2)) { state.AddModelError("", "Неисправность не должна быть обнаружена более 2-х лет назад!"); } } else { state.AddModelError("", "Пожалуйста введите дату обнаружения неисправности!"); } } catch { //нераспарсил state.AddModelError("DateError", "Пожалуйста введить дату обнаружения неисправности в формате ДД.ММ.ГГГГ"); } //описание неисправности: обязательно, не более 1000 символов if (model.ReporderDescription==null) { state.AddModelError("", "Пожалуйста введите описание неисправности!"); } else if (model.ReporderDescription.Length>1000) { state.AddModelError("", "Описание неисправности слишком длинное!"); } //адрес местонахождения: проверяем только если пользователь снял галку "установлен на тепловом пункте" //обязательно должен быть введен, должен быть не более 300 символов if(!model.Mounted) { if (model.EquipLocation==null) { state.AddModelError("", "Пожалуйста укажите адрес местонахождения (или выберите 'находится в ТП')!"); } else if(model.EquipLocation.Length>300) { state.AddModelError("", "Адрес установки слишком длинный!"); } } //срок выполнения работ, если введен, то должен быть не более 200 символов if(model.ExpectedRepairTerm!=null && model.ExpectedRepairTerm.Length>200) { state.AddModelError("", "Срок выполнения работ слишком длинный!"); } //контакт: должен быть отмечен по крайней мере 1 контакт и не более 5; int count = 0; if(model.ContactsChoice!=null) { foreach (var contact in model.ContactsChoice) { if (contact.Checked == true) count++; } } if (count==0) { state.AddModelError("", "Пожалуйста выберите контактных лиц!"); } else if (count>5) { state.AddModelError("", "Пожалуйста выберите не более 5 контактных лиц!"); } }
void ValidateCreporderList_VM(CreporderList_VM model, ModelStateDictionary state) { state.Clear(); //введенные даты, должны иметь правильный формат DateTime Date; try { if (model.StartRevDate!=null)Date = DateTime.Parse(model.StartRevDate); if (model.FinishRevDate!=null)Date = DateTime.Parse(model.FinishRevDate); } catch { state.AddModelError("", "Даты необходимо ввести в формате ДД.ММ.ГГГГ"); } }
void ValidateEditCRepOrderStatus_VM(EditCRepOrderStatus_VM model, ModelStateDictionary state) { state.Clear(); DateTime tempDate; float tempFloat; string tempString; //валидация проходит отдельно для каждого варианта нового статуса //1.sended if (model.NewStatus=="sended") { //дата отправки //должна быть введена, должна иметь правильный формат, должна быть в интервале дата обнаружения -- текущая дата try { if (model.SendedDate != null) { tempDate = DateTime.Parse(model.SendedDate); //если ввели некоректные данные, то не распарсит if (tempDate > DateTime.Now) { state.AddModelError("", "Дата направления заявки позже текущей даты!"); } else if (tempDate < model.Order.CRO_revealedDate) { //state.AddModelError("", "Заявка не может быть направлена раньше обнаружения неисправности!"); } } else { state.AddModelError("", "Пожалуйста введите дату направления заявки!"); } } catch { //нераспарсил state.AddModelError("DateError", "Пожалуйста введить дату направления заявки в формате ДД.ММ.ГГГГ"); } //номер заявки - должен быть присвоен, должен быть не более 10 символов if (model.No== null) state.AddModelError("NoError", "Пожалуйста укажите номер, присвоенный заявке!"); else if (model.No.Length>10) state.AddModelError("NoError", "Ошибка: номер заявки должен быть в пределах 10 символов"); } //sended //2. billed if (model.NewStatus == "billed") { //дата предъявления //должна быть введена, должна иметь правильный формат, должна быть в интервале дата восстановления -- текущая дата //перед приемкой к оплате работ заявка должна быть закрыта try { if (model.BilledDate != null) { tempDate = DateTime.Parse(model.BilledDate); //если ввели некоректные данные, то не распарсит if (tempDate > DateTime.Now) { state.AddModelError("", "Дата предъявления работ к оплате позже текущей даты!"); } if(model.Order.CRO_closedDate==null) { state.AddModelError("", "Ошибка: попытка внесения информации об оплате заявки, которая не закрыта!"); } else if (tempDate < model.Order.CRO_closedDate) { state.AddModelError("", "Ошибка. Дата предъявления работ к оплате раньше даты закрытия заявки!"); } } else { state.AddModelError("", "Пожалуйста введите дату предъявления работ к оплате!"); } } catch { //нераспарсил state.AddModelError("DateError", "Пожалуйста введить дату предъявления работ к оплате в формате ДД.ММ.ГГГГ"); } //подрядная организация //должна быть выбрана if(model.Contractor==null) { state.AddModelError("", "Пожалуйста выберите подрядную организацию!"); } //стоимость ремонта // должна быть введена, должна быть в интервале 150 - 150 000,00 if (model.RepairCost!=null) { //на tempString = model.RepairCost.Replace('.', ',');//для того, чтобы пользователь имел возможность вводить и через точку и через запятую try { tempFloat = float.Parse(tempString); //распарсил, продолжаем if (tempFloat<150.00 || tempFloat>150000.00) { state.AddModelError("", "Ошибка: введена недостоверная сумма!"); } } catch { state.AddModelError("","Пожалуйста введите сумму в формате XXXX,XX!"); } } else { //сумма не введена state.AddModelError("", "Пожалуйста введите сумму!"); } } //billed //3. examined if (model.NewStatus == "examined") { //дата обследования //должна быть введена, должна иметь правильный формат, должна быть в интервале дата отправки заявки -- текущая дата //перед обследованием заявка должна быть направлена Подрядчику try { if (model.ExaminedDate != null) { tempDate = DateTime.Parse(model.ExaminedDate); //если ввели некоректные данные, то не распарсит if (tempDate > DateTime.Now) { state.AddModelError("", "Дата обследования позже текущей даты!"); } if (model.Order.CRO_sendedDate==null) { state.AddModelError("", "Ошибка: обследование невозможно, заявка не была направлена подрядчику!"); } else if (tempDate < model.Order.CRO_revealedDate) { //state.AddModelError("", "Ошибка: обследования объекта раньше даты обнаружения неисправности!"); } } else { state.AddModelError("", "Пожалуйста введите дату обследования!"); } } catch { //нераспарсил state.AddModelError("DateError", "Пожалуйста введить дату обследования в формате ДД.ММ.ГГГГ"); } // Примечание должно быть не более 1000 символов if (model.Comment!=null&&model.Comment.Length>1000) { state.AddModelError("CommentError", "Ошибка: примечание слишком длинное!"); } } //examined //4. notexamined if (model.NewStatus == "notexamined") { //запрещено удаление информации об обследовании и итогах работы, если работы предъявлены к оплате if (model.Order.CRO_billedDate != null) { state.AddModelError("", "Ошибка удаления информации: выполнение работ по заявке предъявлено к оплате"); } // Примечание должно быть не более 1000 символов if (model.Comment != null && model.Comment.Length > 1000) { state.AddModelError("CommentError", "Ошибка: примечание слишком длинное!"); } }//notexamined //5. closed if (model.NewStatus == "closed") { //результат ремонта //должен быть указан, должен быть либо repeared, cancelled, decommited if (model.RepairResult==null) { state.AddModelError("", "Пожалуйста укажите результат выполнения заявки"); } else if (model.RepairResult != "repeared" && model.RepairResult != "decommited" && model.RepairResult != "cancelled") { state.AddModelError("", "Ошибка: указан неизвестный результат выполнения заявки"); } //дата закрытия заявки //должна быть введена, должна иметь правильный формат, должна быть в интервале дата отправки заявки -- текущая дата //если результат ремонта : выполнен или извещение, то заявка должна быть направлена try { if (model.ClosedDate != null) { tempDate = DateTime.Parse(model.ClosedDate); //если ввели некоректные данные, то не распарсит if (tempDate > DateTime.Now) { state.AddModelError("", "Ошибка: дата закрытия заявки позже текущей даты!"); } if (model.Order.CRO_sendedDate == null) { if(model.RepairResult!= "cancelled") { //результат ремонта : выполнен или извещение //state.AddModelError("", "Ошибка закрытия заявки: заявка не была направлена подрядчику!"); } } else if (tempDate < model.Order.CRO_sendedDate) { //state.AddModelError("", "Ошибка: дата закрытия заявки раньше, чем дата направления ее подрядчику!"); } } else { switch (model.RepairResult) { case ("repeared"): state.AddModelError("", "Пожалуйста введите дату выполнения ремонта!"); break; case ("decommited"): state.AddModelError("", "Пожалуйста введите дату выдачи извещения!"); break; case ("cancelled"): state.AddModelError("", "Пожалуйста введите дату отмены заявки!"); break; } } } catch { //нераспарсил state.AddModelError("DateError", "Пожалуйста введить дату в формате ДД.ММ.ГГГГ"); } //Вердикт // Должен быть указан, долен быть не более 1000 символов //описание неисправности: обязательно, не более 1000 символов if (model.Verdict == null) { switch (model.RepairResult) { case ("repeared"): state.AddModelError("", "Пожалуйста опишите выявленные дефекты!"); break; case ("decommited"): state.AddModelError("", "Пожалуйста укажите заключение подрядчика!"); break; case ("cancelled"): state.AddModelError("", "Пожалуйста укажите причины отмены заявки!"); break; } } else if (model.Verdict.Length > 1000) { switch (model.RepairResult) { case ("repeared"): state.AddModelError("", "Ошибка: слишком длинное описание дефектов!"); break; case ("decommited"): state.AddModelError("", "Ошибка: слишком длинное заключение подрядчика!"); break; case ("cancelled"): state.AddModelError("", "Ошибка: слишком длинное описание причин отмены заявки!"); break; } } } //closed //6. examinednotclosed //запрещено удаление информации об обследовании и итогах работы, если работы предъявлены к оплате if (model.NewStatus == "examinednotclosed") { if (model.Order.CRO_billedDate != null) { state.AddModelError("", "Ошибка удаления информации: выполнение работ по заявке предъявлено к оплате"); } // Примечание должно быть не более 1000 символов if (model.Comment != null && model.Comment.Length > 1000) { state.AddModelError("CommentError", "Ошибка: примечание слишком длинное!"); } }//examinednotclosed }
//метод валидации public void Validate(ModelStateDictionary state) { state.Clear(); //планируемое количество замен //должно быть в интервале 0 - общее количество контроллеров автоматики DBRepository dataRepo = new DBRepository(); int contrAmm = dataRepo.ETKAutomControllers.Count(); int replLvl; try { if (ReplacementLevel != null) //если null, то значит пользователь ничего не ввел в поле (допустимо) { replLvl = Int32.Parse(ReplacementLevel); //если ввели не число, то не распарсит if (replLvl < 0) { state.AddModelError("DateError", "Пожалуйста введите достоверный уровень замен контролеров в год!"); } } } catch { //нераспарсил state.AddModelError("DateError", "Пожалуйста введите достоверный уровень замен контролеров в год!"); } //валидация выбранных факторов //если пользователь выбрал учитывать модификацию, то также должна быть выбрана модель if(ModificationFact&&!ModelFact) state.AddModelError("DateError", "При выборе \"Учитывать модификацию...\" обязательно должно быть выбрано \"Учитывать модель\"!"); //валидация типа оборудования: пропускаем только контроллеры, при добавлении возможности обработки новых видов оборудования необходимо внести изменения if (EquType!="controllers") state.AddModelError("EquTypeError", "Метод для выбранного типа оборудования в настоящее время не реализован!"); }
public void Clear_RemovesAllEntries_IfDictionaryIsEmpty() { // Arrange var dictionary = new ModelStateDictionary(); // Act dictionary.Clear(); // Assert Assert.Equal(0, dictionary.Count); Assert.Equal(0, dictionary.ErrorCount); Assert.Empty(dictionary); Assert.Equal(ModelValidationState.Valid, dictionary.ValidationState); }
private Person SetPerson(PersonEditModel personEditModel, SeminarPerson seminarPerson, ModelStateDictionary modelState, Person person = null, HttpPostedFileBase profilePic = null) { modelState.Clear(); person = person ?? personEditModel.Person; // copy all the fields Mapper.Map(personEditModel, person); SetAddresses(person, personEditModel.Addresses, ModelState); SetContacts(person, personEditModel.Contacts, ModelState); if (seminarPerson != null) { SetCommodities(seminarPerson, personEditModel.Commodities); if (personEditModel.Firm != null || !string.IsNullOrEmpty(personEditModel.FirmName)) { seminarPerson.Firm = personEditModel.Firm ?? new Firm(personEditModel.FirmName, personEditModel.FirmDescription) { WebAddress = personEditModel.FirmWebAddress }; } if (personEditModel.Title != null) //Not sure what is happening here. This may fix it. { seminarPerson.Title = personEditModel.Title; } } // deal with the image)) if (profilePic != null) { // blank out existing image files person.OriginalPicture = null; person.MainProfilePicture = null; person.ThumbnailPicture = null; // read the file and set the original picture var reader = new BinaryReader(profilePic.InputStream); person.OriginalPicture = reader.ReadBytes(profilePic.ContentLength); person.ContentType = profilePic.ContentType; } // run the validation person.TransferValidationMessagesTo(modelState); return person; }
void ValidateCreateCRepOrder_Equipment_VM(CreateCRepOrder_Equipment_VM model,ModelStateDictionary state) { state.Clear(); //контроллер должен быть выбран if (model.CID==null) { state.AddModelError("", "Пожалуйста выберите контроллер"); } else { //выбранный контроллер не должен находится в ремонте HSA.Domain.BD.Controller controller = dataRepository.Controllers.SingleOrDefault(c => c.C_ID == model.CID); if(controller.IsBroken()) { state.AddModelError("", "Пожалуйста выберите контроллер, который не находится в ремонте"); } } }
public async Task <bool> ValidateAsync(TeamValidator teamValidator, long tournamentId, ModelStateDictionary modelState, CancellationToken cancellationToken) { if (Round.ShowSelector && Round.SelectedRoundId.HasValue) { var tirValidator = new TeamInRoundValidator( new TeamInRoundEntity { RoundId = Round.SelectedRoundId.Value, TeamId = teamValidator.Model.Id }, (teamValidator.Data, tournamentId)); await tirValidator.CheckAsync(cancellationToken); foreach (var fact in tirValidator.GetFailedFacts()) { // validator currently only has one rule if (fact.Id == TeamInRoundValidator.FactId.RoundBelongsToTournament) { modelState.AddModelError(string.Join('.', Round.HtmlFieldPrefix, nameof(Round.SelectedRoundId)), fact.Message); } } } await teamValidator.CheckAsync(cancellationToken); foreach (var fact in teamValidator.GetFailedFacts()) { if (fact.Exception != null) { throw new Exception(null, fact.Exception); } if (fact.Type == FactType.Critical || fact.Type == FactType.Error) { foreach (var fieldName in fact.FieldNames) { modelState.AddModelError(string.Join('.', Team.HtmlFieldPrefix, fieldName), fact.Message); } } else { modelState.AddModelError(string.Empty, fact.Message); // Validator generates FactType.Warning only, if no errors exist IsWarning = true; } } // The Hash is re-calculated with the new submitted values. // We have to compare to the original hidden Hash field value, // because to override warnings, form fields must be unchanged since last post var newHash = ComputeInputHash(); if (IsWarning && OverrideWarnings && newHash == Hash) { modelState.Clear(); IsWarning = false; } if (!modelState.IsValid) { // Show checkbox unchecked OverrideWarnings = false; // Set hash field value to latest form fields content Hash = newHash; } return(modelState.IsValid); }
public void Clear_RemovesAllEntries() { // Arrange var dictionary = new ModelStateDictionary(); dictionary.AddModelError("a", "a-error"); dictionary.AddModelError("b", "b-error"); dictionary.AddModelError("c", "c-error"); // Act dictionary.Clear(); // Assert Assert.Equal(0, dictionary.Count); Assert.Equal(0, dictionary.ErrorCount); Assert.Empty(dictionary); Assert.Equal(ModelValidationState.Valid, dictionary.ValidationState); }