asp.net mvc-如何在运行时根据mvc中的其他参数值更改Displayname值


[DisplayName("Planned Amt($):")]  
 public string PlannedAmount { get; set; } 
 [DisplayName("Unallocated Amt($):")] 
 public string UnallocatedAmount { get; set; }

我的类中有这样的成员。基于budgetType变量值,我需要更改这两个属性的DisplayName值。请告诉我怎么做。

您应该能够从DisplayNameAttribute继承并覆盖DisplayName属性:

public class DisplayNameExAttribute : DisplayNameAttribute
{
    public override string DisplayName
    {
        get
        {
            // do what you want here.
            return base.DisplayName;
        }
    }
}

我实际上还没有尝试实现这一点,所以DisplayName属性可能被编码为必须使用其他扩展点,但我会尝试确认。

您可以像这样从DisplayNameAttribute继承:

public class BudgetDisplayNameAttribute : DisplayNameAttribute
{
    public BudgetDisplayNameAttribute(string pBaseName) : base(pBaseName) { }
    public override string DisplayName
    {
        get
        {
            return My.BudgetType + " " + base.DisplayName;
        }
    }
}

在本例中,My.BudgetType是公共静态类中的公共静态字符串:

public static class My
{
    public static string BudgetType = "Quarterly";
}

然后将属性应用于您的属性,如下所示:

[BudgetDisplayName("Planned Amt($):")]  
public string PlannedAmount { get; set; } 
[BudgetDisplayName("Unallocated Amt($):")] 
public string UnallocatedAmount { get; set; }

最后,程序中使用属性的DisplayName属性的部分将获得文本:

";季度计划金额(美元(:";对于PlannedAmount属性

";季度未分配金额(美元(:";对于UnallocatedAamount属性