如何将 GetErrors() 转换为字符串消息?

问题描述 投票:0回答:1

我有一个像这样的视图模型类设置:

public partial class PgViewModel : ObservableValidator

现在在这个类中,我有一些像这样的属性设置:

[Required]
public string? dbOwner {  get; set; }

[Required]
[EmailAddress]
public string? dbEmail {  get; set; }

[Required]
[MinLength(8)]
public string? dbPasswd { get; set;}

视图模型中还有一个方法,如下所示:

[RelayCommand]
    public void SaveDb()
    {
        ValidateAllProperties();

        if (HasErrors)
        {
            var err = GetErrors(dbOwner);
            Shell.Current.DisplayAlert("Error", $"{err}", "OK");
        }
        else
            Shell.Current.DisplayAlert("Msg", "Everything is OK.", "OK");
    }

现在,在内容页面的 xaml 代码中,我有一些条目控件数据绑定到视图模型类中的属性,还有一个按钮也将数据绑定到 SaveDb 方法。现在,当我运行程序时,我故意将绑定到 dbOwner 的条目控件留空,当我单击按钮时,显示警报显示:

所以我的问题是,如何将这个“错误消息”转换为外行人可读的语言?

c# validation xaml error-handling maui
1个回答
0
投票

获取消息的简单方法

string.Join(',', err.Select(x => x.ErrorMessage).ToList());

您还有成员名称属性数组,因此可能需要将其包含在类似的内容中

var allErrors = err.Select(x => $"Members: {string.Join(',', x.MemberNames)} have errored with message: {x.ErrorMessage}").ToList();
var displayErrors = string.Join(',', allErrors);
© www.soinside.com 2019 - 2024. All rights reserved.