gpt4 book ai didi

c# - "ErrorMessage="用于验证的自定义属性的命名参数

转载 作者:太空宇宙 更新时间:2023-11-03 23:29:55 26 4
gpt4 key购买 nike

我按照教程为我的应用程序制作了一个自定义远程验证器,这样即使禁用了 javascript,它也能正常工作。它与普通的 Remote 验证一样,具有指定的 controlleraction 以及可选的 ErrorMessage

完整代码如下:

public class RemoteEmailCheckAttribute : RemoteAttribute
{
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
//get the controller
Type controller = Assembly.GetExecutingAssembly().GetTypes().FirstOrDefault(type => type.Name.ToLower() == string.Format("{0}Controller", this.RouteData["controller"].ToString()).ToLower());
if (controller != null)
{
MethodInfo action = controller.GetMethods().FirstOrDefault(method => method.Name.ToLower() == this.RouteData["controller"].ToString().ToLower());

if (action != null)
{
object instance = Activator.CreateInstance(controller);
object response = action.Invoke(instance, new object[] { value });
if (response is JsonResult)
{
object jsonData = ((JsonResult)response).Data;
if (jsonData is bool)
{
return (bool)jsonData ? ValidationResult.Success : new ValidationResult(this.ErrorMessage);
}
}
}

}

return new ValidationResult(this.ErrorMessage);
}


public RemoteEmailCheckAttribute(string routeName)
: base(routeName)
{

}


public RemoteEmailCheckAttribute(string action, string controller)
: base(action, controller)
{

}

public RemoteEmailCheckAttribute(string action, string controller, string areaName)
: base(action, controller, areaName)
{

}
}

这就是我在我的属性(property)上设置它的方式,

[RemoteEmailCheck("IsEmailTaken","Enrollment",ErrorMessage="Email is already in use. Please pick something else")]
public string email { get; set; }

我的问题是,因为我将使用这个构造函数:

 public RemoteEmailCheckAttribute(string action, string controller, string areaName)
: base(action, controller, areaName)

既然第三个参数其实是任意名字的string,那么它是如何得到指定的ErrorMessage=""的呢?

我一直在网上查看/研究并阅读有关命名参数的内容,但它们有些不同,请向我说明。

最佳答案

创建属性时,任何公共(public)非静态读写字段或属性都是命名参数。

有关详细信息,请参阅 Creating Custom Attributes

关于c# - "ErrorMessage="用于验证的自定义属性的命名参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32674224/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com