2015-10-07 2 views
2

Я работаю над проектом Web API 2. кроме того, что требуются некоторые свойства, некоторые могут иметь только определенные значения. Одним из вариантов является то, что я могу попытаться сохранить модель в базе данных (EF6) и создать некоторую логику при сохранении, но я думаю, что лучше проверить правильность значения, прежде чем я сделаю вызов в базу данных. Являются ли аннотации данных такими атрибутами, как Range, но затем для конкретных значений строк, как в примере ниже? Или мне нужно написать собственный атрибут проверки подлинности?Подтвердить модель по определенным строковым значениям

public class Person { 
    public int PersonID { get; set; } 

    [Required] 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 

    [StringRange("M","F")] 
    public string Gender { get; set; } 
} 

В приведенном выше примере, когда запись выполняется в контроллер, только значения, чтобы принять это «М» или «F»,.

+3

Вы можете использовать регулярные выражения см http://stackoverflow.com/questions/8244572/dataannotations -validation-regular-expression-in-asp-net-mvc-4-razor-view – MajkeloDev

+0

вы также можете создать собственный атрибут проверки https://www.youtube.com/watch?v=vcX8WW4fL1s –

ответ

2

Для проверки Пол свойства я создал атрибут пользовательских проверок пути создания нового класса (атрибут):

using System; 
using System.Collections.Generic; 
using System.Web; 
using System.ComponentModel.DataAnnotations;  

namespace MyProject.Models.Validation 
{ 

    public class StringRangeAttribute : ValidationAttribute 
    { 
     protected override ValidationResult IsValid(object value, ValidationContext validationContext) 
     { 

      if(value.ToString() == "M" || value.ToString() == "F") 
      { 
       return ValidationResult.Success; 
      } 


      return new ValidationResult("Please enter a correct value"); 
     } 
    } 
} 
Смежные вопросы