我正在用C#中的Excel实现文件导出功能.我使用了数据注释进行模型验证. 我有两个列值,如Department、SubDepartment.如果两个值相同,则应返回验证错误消息.如何使用数据注释(如模型验证)来实现这一点.我使用了EXCEL解析来解析数据并映射到这个数据模型.

    public class Product
    {
        public int Id { get; set; }

        [Required]
        [StringLength(10)]
        public string Name { get; set; }

        public string Department { get; set; }

        public string SubDepartment { get; set; }
    }

我期待通过使用数据注释或任何替代方法来进行此验证的解决方案,

推荐答案

尝尝这个

为此,您可以使用CustomValidation使用如下属性来修饰您的实体类:

CustomValidation(typeof(MyEntity), "ArePropertiesEqual")]
Public class MyEntity
{
public string prop1 { get; set; }
public string prop1 { get; set; }
}

并实现一个名为:ArePropertiesEquity的函数,如下所示:

public static ValidationResult ArePropertiesEqual(MyEntity myEntity, ValidationContext validationContext)
{
    if(myEntity.prop1 != myEntity.prop2) 
                        return new ValidationResult("propertiesdont match", new[] { "prop1", "prop2" });


    return ValidationResult.Success;
}

Csharp相关问答推荐

为什么使用DXGI输出复制和Direct 3D时捕获的图像数据全为零?

并行令牌更新

在C#WinUI中,一个关于System的崩溃."由于未知原因导致执行不例外"

C#EF Core 8.0表现与预期不符

Int和uint相乘得到LONG?

Appsettings.json未加载.Net 8 Blaazor Web程序集

在.NET核心项目中创建Startup.cs比在Program.cs中注册服务好吗?

在ASP.NET Core Web API项目中通过中间件修改`Request.Path`不会更改使用的控制器/操作

MigraDoc文档

在EF Core中,有没有什么方法可以防止在查询中写入相同的条件,而代之以表达式?

.NET并发词典交换值

ASP.NET Core MVC将值从视图传递到控制器时出现问题

是否可以将Collectionview中的数组与ObservableCollection绑定?

为什么Azure函数(独立工作进程)索引失败?使用Azure App配置的CosmosDbTrigger绑定失败,未解析为值

如何正确处置所有动态控件?

RCL在毛伊岛应用程序和Blazor服务器应用程序.Net 8.0中使用页面

如何在Xamarin.Forms中检索PanGesture事件的位置?

在使用.NET EF Core DbContext属性之前,是否应使用null判断

HttpClient,上传文件时实现进度

为什么Visual Studio 2022建议IDE0251将我的方法设置为只读?