C# N-tier 体系结构输入验证通知

C# N-tier architecture input validation notifcations

我正在使用 n-tier 架构为学校项目制作文件共享系统。 我想在我的业务逻辑中验证用户输入,并能够通知用户什么输入有错误以及它是什么错误。

我真的不知道该如何处理。我的业务逻辑有一种方法可以像这样插入新的上传:

    public bool NewFile(File entity)
    {
        return repo.Insert(entity);
    }

这是我的文件模型object:

    public class File : Upload
{
    public int UploadId { get; set; }
    public string FileType { get; set; }
    public string Category { get; set; }
    public int Upvote { get; set; }
    public int Downvote { get; set; }
}

上传模型包含标题、描述等属性

如何使用 return 布尔值的方法通知用户输入错误?我是否进行单独的验证 class 并使方法 return 成为验证 class 的实例?或者我是否抛出带有正确错误消息的自定义异常并在我的表示层中捕获它?

如果有人能指出正确的方向,我将不胜感激

我不知道您使用的是什么框架,但验证用户输入的好方法是在尝试插入数据库之前执行验证。

this solution 在asp.net mvc 中很常见,你可以在你的情况下使用它。

如果方便的话我建议在你的插入周围使用 try/catch 但你必须自己做逻辑来通知用户什么输入引发了错误以及如何修复它(也许例如会有大小限制?)。

编辑:try/catch 对于学校项目来说已经足够了,但在生产中,您更愿意在插入之前预测任何可能的错误。像这样:

public bool NewFile(File entity)
{
    if( /* check a validation rule */)return false;   
    else if( /* check another rule */ )return false;   

    return repo.Insert(entity);
}

当然,如果您想向用户发回信息,您可能更愿意返回一条字符串消息,说明未通过验证规则。

问候