gpt4 book ai didi

asp.net-mvc - 自定义 ValidationAttribute 中的访问 Controller 上下文

转载 作者:行者123 更新时间:2023-12-05 01:22:39 26 4
gpt4 key购买 nike

我正在使用 ValidationAttribute 实现自定义验证器:

public class CustomAttribute : ValidationAttribute
{
protected override ValidationResult IsValid (object value, ValidationContext validationContext)
{
//...
}
}

但要运行验证,我需要访问一个变量,该变量是应用程序基本 Controller 的一部分(它与当前登录的用户相关)。我怎样才能得到它?

最佳答案

如果您可以使用变量填充模型属性,您可以这样做:

型号:

[CustomAttribute("MyVariableAsModelProperty", "Failed Validation!")
public string ValidateThis{get; set;}
public string MyVariableAsModelProperty{get; set;}

您的自定义验证器:

public class CustomAttribute : ValidationAttribute
{
string otherPropertyName;
public CustomAttribute(string otherPropertyName, string errorMessage)
: base(errorMessage)
{
this.otherPropertyName = otherPropertyName;
}
protected override ValidationResult IsValid (object value, ValidationContext validationContext)
{
var otherPropertyInfo = validationContext.ObjectType.GetProperty(this.otherPropertyName);
var referenceProperty = (string)otherPropertyInfo.GetValue(validationContext.ObjectInstance, null);
//...
}

现在您有了要比较的 2 个值:value 是要验证的模型属性,referenceProperty 是变量。

关于asp.net-mvc - 自定义 ValidationAttribute 中的访问 Controller 上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24306330/

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