2017-10-20 1 views
0

J'ai une application MVC qui permet à l'utilisateur ADM de changer dynamiquement les décimales d'un nombre décimal. Je dois changer le format d'affichage, j'ai donc écrit le code suivant:Erreur d'expression de la constante DecimalDynamicDisplayFormat

public ForecastProfitView(decimal? literPerUnit = null, int? _decimalPlaces = null) 
    { 
     LiterPerUnit = ((literPerUnit ?? 0) == 0) ? 1 : literPerUnit.Value; 
     decimalPlaces = ((_decimalPlaces ?? 0) == 0) ? 2 : _decimalPlaces.Value; 
    } 

    private decimal LiterPerUnit { get; } 
    private static int decimalPlaces { get; set; } 

    [Display(ResourceType = typeof(Language.App_GlobalResources.AnalysisAndManagement), Name = "BottlingMaterialsCost")] 
    [DecimalDynamicDisplayFormat(decimalPlaces)] 
    public decimal BottlingMaterialsCost { get; set; } 

Quand je mets [DecimalDynamicDisplayFormat(decimalPlaces)], il me donne une erreur, parce que je besoin d'une expression constante. Existe-t-il un moyen de contourner ce problème?

Répondre

1

Non. Vous êtes limité aux constantes de compilation. Fondamentalement tout ce qui peut être un const.

je garderais le format dans une propriété séparée comme il est dynamique et faire quelque chose comme:

@Html.TextBoxFor(m => m.BottlingMaterialsCost, bottlingMaterialsCostFormat) 


@Html.TextBoxFor(m => m.BottlingMaterialsCost, "{0:0.00}") 

Mise à jour. Vous pouvez faire quelque chose comme ceci pour calculer votre format:

var bottlingMaterialsCostFormat = ((_decimalPlaces ?? 0) == 0) ? "{0:00}" : "{0:" + new string('0', _decimalPlaces.Value) + "}"; 
+0

ne peut pas le comprendre – Reznor13

+0

je mis à jour ma réponse en fonction de votre propriété 'decimalPlaces'. L'idée principale est de calculer en quelque sorte ce format. –

+0

cela a fonctionné, merci beaucoup! – Reznor13