1. 程式人生 > >關於Asp.net WebAPI自定義驗證並處理model,

關於Asp.net WebAPI自定義驗證並處理model,

獲取客戶端發來的資料方法:

protected virtual string GetRequestFromData()
        {
            HttpContextBase context = Request.Properties["MS_HttpContext"] as HttpContextBase;
            if (context == null) return string.Empty;
            StreamReader reader = new StreamReader(context.Request.InputStream);
            string data = reader.ReadToEnd();
            return data;
        }

解析資料我這裡獲取的到資料是json格式的:

string json = GetRequestFromData();
 T model=JsonConvert.DeserializeObject<T>(json);

自定義驗證Model
引用:

using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
 protected bool ValidateModelState<T>(T model)
        {
            ValidationContext validationContext = new ValidationContext(model);
            ICollection<ValidationResult> errors = new List<ValidationResult>();
            bool result = Validator.TryValidateObject(model, validationContext, errors, true);
            foreach (ValidationResult error in errors)
            {
                foreach (string memberName in error.MemberNames)
                {
                    ModelState.AddModelError(memberName, error.ErrorMessage);
                }
            }
            return result;
        }