我是 c# 的新手,想问你一些事情,请帮忙。
我使用如下匿名类创建了一个包含 3 个人的变量:
var personas = new[] {
new {nombre = "Guillermo", apellido = "Pérez", edad = 37}
, new {nombre = "Juan", apellido = "García", edad = 27}
, new {nombre = "Maria", apellido = "Rosina", edad = 47}
};
Run Code Online (Sandbox Code Playgroud)
现在,我尝试迭代这些项目中的每一个,我做到了(使用以下代码)
for (int i = 0; i < personas.Length; i++)
{
var persona = personas[i];
Console.WriteLine("{0} {1} tiene {2} años.", persona.nombre, persona.apellido, persona.edad);
}
Run Code Online (Sandbox Code Playgroud)
当我想创建一个方法来做我对最后一段代码所做的事情时,问题就出现了,这个想法是创建一个方法并将这个对象(在本例中为角色)传递给该方法并在内部执行循环。我所做的是这样的:
showPersonas(personas);
static void showPersonas(object[] personsList) {
for (int i = 0; …Run Code Online (Sandbox Code Playgroud) 我正在尝试解决在尝试使用 blazor 在我女儿的狗店上执行自定义验证属性时发现的问题。
基本上我有一个属性如下:
[Test]
public int? PetAge { get; set; }
Run Code Online (Sandbox Code Playgroud)
如您所见,我将创建一个名为“Test”的自定义属性,因此我创建了一个新类,如下所示:
public class Test : ValidationAttribute
{
protected override ValidationResult? IsValid(object? value, ValidationContext validationContext)
{
return new ValidationResult("niet! niet!");
}
}
Run Code Online (Sandbox Code Playgroud)
我的理解是,我可以返回一个带有字符串消息的新 ValidationResult,或者如果一切顺利,我可以返回 ValidationResult.Success。在我的示例中,它应该始终返回问题,因为除了始终返回验证结果之外,我们没有提供任何其他逻辑。
运行此代码时,它根本不返回任何内容,表单上也没有显示任何错误。现在我注意到的是,如果我使用 IsValid 方法的其他版本,它会起作用,唯一的问题是我想发回自定义消息而不仅仅是真/假结果。其工作原理如下:
public override bool IsValid(object? value)
{
return false;
}
Run Code Online (Sandbox Code Playgroud)
但在这种情况下,我必须在参数中提供错误消息,如下所示:
[Test(ErrorMessage("this is not ok!")]
public int? PetAge { get; set; }
Run Code Online (Sandbox Code Playgroud)
由于这些参数必须是常量,因此这是一个很棒的想法,不仅能够将自定义消息显示为错误和/或访问上下文等......
我在 Blazor 应用程序上做错了什么吗?任何帮助将不胜感激!