Sam*_*Sam 3 c# asp.net-mvc asp.net-web-api
我的类中有很多Guid属性,我想确保 aGuid.Empty将使ModelState invalid。处理这个问题的最佳方法是什么?
说,我有以下用户提交给我的 API 操作方法的类:
{
public Guid Id { get; set: }
[Required]
public string name { get; set: }
}
Run Code Online (Sandbox Code Playgroud)
通过使用[Required],我确保用户必须始终在名称字段中给我一些东西,但如果用户不提供Id,它就会变成Guid.Empty并且ModelState仍然有效。
我想确保我将始终Guid在Id属性中获得一个值而不是Guid.Empty.
所以,这里是超级简单的步骤:
首先,我创建了一个名为 CustomAttributeNoGuidEmpty.cs 的新类,并将其放在我的“Utils/Validation”文件夹下。我看到有些人把它放在 App_Code 等下,这也很好。
这个类看起来像这样:
using System;
using System.ComponentModel.DataAnnotations;
namespace MyApp.Utils.Validation
{
[AttributeUsage(AttributeTargets.Property | AttributeTargets.Field, AllowMultiple = false)]
sealed public class CustomAttributeNoGuidEmpty : ValidationAttribute
{
public override bool IsValid(Object value)
{
bool result = true;
if ((Guid)value == Guid.Empty)
result = false;
return result;
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后我简单地将它应用到我的类中的属性。显然,我需要using引用它:
using MyApp.Utils.Validation;
{
[CustomAttributeNoGuidEmpty]
public Guid Id { get; set; }
[Required]
public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
现在,除非 Id 的值有效,否则Guid ModelState无效。这包括 Id 字段值为 的情况Guid.Empty。