我々は、すべての通常の検証されている使用する必要がありますMVCの開発では、モデルの検証は、非常に一般的です
if(ModelState.IsValid)
{
//验证成功要做的事
.....
}
しかし、時には、私たちはそうモデルが不完全な場合、確かに検証されることはありません、そのような更新のユーザーではなく、すべてのユーザーの更新情報などのユーザ情報を変更するよう、一部を確認する必要があります。
一例として、モデルクラスをここに
public class User
{
[Required]
public int ID { get; set; }
[Required]
[StringLength(18,MinimumLength = 2,ErrorMessage = "名称字符长度在2-18之间")]
public string Name { get; set; }
[Required]
[Range(0,100,ErrorMessage = "年龄在0-100")]
public int Age { get; set; }
}
ケース1:用語は、比較的小さな検証しません
我々は使用することができますRemove
方法を
//不验证年龄项
ModelState.Remove("Age");
ケース2:項目を確認するために、比較的少ないください
残念ながら、私は(= =あなたがそれを見つけた場合、メッセージのコメントエリアを残してください)MSDNは、この機能の方法を見つけるように見えるしません参照
だから今、この機能を実現するために拡張メソッドを書きます
/// <summary>
/// 验证实体模型中的部分属性
/// </summary>
/// <param name="ModelState"></param>
/// <param name="keys">要验证的属性List集合</param>
/// <returns></returns>
public static bool IsPartValid(this ModelStateDictionary ModelState,List<string> keys)
{
//遍历要验证部分属性
foreach (var item in keys)
{
//尝试获取对应键的值
//有不符合的模型属性 - Errors错误集合大于0
if (ModelState.TryGetValue(item,out ModelState modelState) && modelState.Errors.Count > 0)
return false;
}
return true;
}
そして、コレクションにそれを検証するために、直接使用
//验证模型中的部分属性
if (ModelState.IsPartValid(new List<string> { "Name", "Age" }))
{
//验证通过,要做的事
......
}