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

时间:2018-04-13 08:01:39

标签: c# validation n-tier-architecture

我正在使用n层架构为学校项目制作文件共享系统。 我想在我的业务逻辑中验证用户输入,并能够通知用户哪些输入有错误,哪些输入有错误。

我真的不知道如何处理这个问题。我的业务逻辑有一种插入新上传的方法,如下所示:

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

这是我的File对象模型:

    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; }
}

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

如何通过返回布尔值的方法通知用户输入错误?我是否创建一个单独的验证类并使该方法返回验证类的实例?或者我是否使用正确的错误消息抛出自定义异常并将其捕获到我的表示层中?

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

1 个答案:

答案 0 :(得分:0)

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

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

如果这是方便的话我会建议在你的插件周围使用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);
}

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

问候