调用返回ValidationResult的验证方法时如何在MessageBox展示验证结果
实现方案
1 先修正原有验证方法的逻辑错误
你当前的实现逻辑存在明显问题:注册信息已存在属于正常的业务判断场景,不会触发异常,所以原来写在catch块里的已存在提示永远不会被触发,注册信息重复时只会走到末尾返回「Failed」。修正后的代码如下:
public static ValidationResult IsValidRegistration(string registration) { try { if (!Business.VehicleList.Any(x => x.Registration == registration)) { // 注册号不存在,验证通过 return new ValidationResult(true, "车辆创建成功"); } else { // 注册号已存在,验证不通过 return new ValidationResult(false, $"注册号:{registration} 已存在"); } } catch { // 仅查询出现异常时返回失败,比如车辆列表为空、数据库连接异常等 return new ValidationResult(false, "验证失败,请稍后重试"); } }
2 调用验证方法并弹窗展示结果
你返回的ValidationResult对象中已经包含了你自定义的提示文本,直接读取对应的文本属性传给MessageBox.Show即可,实现代码如下:
// 执行验证获取结果 var validateResult = Validation.IsValidRegistration(registration); if (validateResult.IsValid) { MessageBox.Show(validateResult.Message); } else { // 错误提示可以额外加标题和错误图标,增强交互 MessageBox.Show(validateResult.Message, "操作错误", MessageBoxButtons.OK, MessageBoxIcon.Error); }
注意:如果你的
ValidationResult类存储提示文本的属性名不是Message,替换成你自己定义的对应属性名即可。
内容的提问来源于stack exchange,提问作者Mark Hunt
相关产品推荐
相关产品推荐

