DataMember attributes for Data validation

时光怂恿深爱的人放手 提交于 2019-11-30 07:18:40

Add System.ComponentModel.DataAnnotations reference to your project.

The reference provides some DataAnnotations which are:

RequiredAttribute, RangeAttribute, StringLengthAttribute, RegularExpressionAttribute

you can in your datacontract like below.

    [DataMember]
    [StringLength(100, MinimumLength= 10, ErrorMessage="String length should be between 10 and 100." )]
    [StringLength(50)]     // Another way... String max length 50
    public string FirstName { get; set; }

    [DataMember]
    [Range(2, 100)]
    public int Age { get; set; }

    [DataMember]
    [Required]
    [RegularExpression(@"\b[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b", ErrorMessage = "Invalid Mail id")]
    public string Email { get; set; }

Hope this helps.

Manually Validating Values: You can manually apply the validation test by using the Validator class. You can call the ValidateProperty method on the set accessor of a property to check the value against the validation attributes for the property. You must also set both ValidatesOnExceptions and NotifyOnValidationError properties to true when data binding to receive validation exceptions from validation attributes.

var unsafeContact = Request["contactJSON"];
try
{
    var serializer = new DataContractJsonSerializer(typeof(Contact));
    var stream = new MemoryStream(Encoding.UTF8.GetBytes(unsafeContact));
    Contact = serializer.ReadObject(stream) as Contact;
    stream.Close();
}
catch (Exception)
{
   // invalid contact
}

Contact class:

[DataContract]
public sealed class Contact
{
    /// <summary>
    /// Contact Full Name
    /// </summary>
    /// <example>John Doe</example>
    [DataMember(Name = "name", IsRequired = true)]
    [StringLength(100, MinimumLength = 1, ErrorMessage = @"Name length should be between 1 and 100.")]
    public string Name {
        get
        {
            return HttpUtility.HtmlEncode(_name);
        }
        internal set
        {
            Validator.ValidateProperty(value, new ValidationContext(this, null, null) { MemberName = "Name" });
            _name = value;
        }
    }
    private string _name;

    // ...
}

Try to look look for WCF Data Annotations. WCFDataAnnotations allows you to automatically validate WCF service operation arguments using System.ComponentModel.DataAnnotations attributes.

http://wcfdataannotations.codeplex.com/

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!