gpt4 book ai didi

c# - 是否可以为 Asp.Net MVC 中的特定角色制作模型属性属性?

转载 作者:太空宇宙 更新时间:2023-11-03 17:00:08 25 4
gpt4 key购买 nike

是否可以只要求指定角色对数据注释的模型字段进行建模?

例如:

[Display(Name = "Kurum")]
[Required(ErrorMessage = "Kurum Alanı Girişi Zorunludur.",Roles="user")]
public decimal? KurumKodu { get; set; }

我知道没有像 Required(Roles="xxxx") 这样的参数,但我想知道是否还有其他解决方案?

谢谢。

最佳答案

您必须为此创建自定义验证属性。下面的代码可以帮助您做到这一点。

      public class RequiredIfAttribute : RequiredAttribute
{
private string PropertyName { get; set; }
private object DesiredValue { get; set; }

public RequiredIfAttribute(string propertyName, object desiredvalue)
{
PropertyName = propertyName;
DesiredValue = desiredvalue;
}

protected override ValidationResult IsValid(object value, ValidationContext context)
{
object instance = context.ObjectInstance;
Type type = instance.GetType();
Object proprtyvalue = type.GetProperty(PropertyName).GetValue(instance, null);
if (proprtyvalue.ToString() == DesiredValue.ToString())
{
ValidationResult result = base.IsValid(value, context);
return result;
}
return ValidationResult.Success;
}
}

然后你必须用这个属性装饰你的属性(阅读代码中的注释理解)

        public class User
{
/// <summary>
/// Gets or Sets Usertype.
/// </summary>
public string UserType { get; set; }

/// <summary>
/// Gets or Sets KurumKodu.
/// Here "Usertype" is property. In that you have to assign current user's role.
/// "user" is constant role. If "UserType" has value as "user" then this will be required.
/// </summary>
[RequiredIf("UserType", "user", ErrorMessage = "It is required")]
public decimal KurumKodu { get; set; }
}

如果您想添加客户端验证(不显眼),请参阅下面的链接。

RequiredIf Conditional Validation Attribute

关于c# - 是否可以为 Asp.Net MVC 中的特定角色制作模型属性属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40015115/

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