C# ViewModel上的数据驱动货币代码

C# ViewModel上的数据驱动货币代码,c#,asp.net-mvc,C#,Asp.net Mvc,我在ASP.NETMVC5中工作。我有以下ViewModel: [Display(Name = "Shipping Cost")] [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:#.#}")] public decimal ShippingCost { get; set; } [Display(Name = "Shipping Currency")] public Currency ShippingCurr

我在ASP.NETMVC5中工作。我有以下ViewModel:

[Display(Name = "Shipping Cost")]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:#.#}")]
public decimal ShippingCost { get; set; }
[Display(Name = "Shipping Currency")]
public Currency ShippingCurrency { get; set; }
ShippingCurrency是一个如下所示的枚举:

public enum Currency
{
    GBP,
    USD,
    CAD,
    AUD
}
当我查看ViewModel的详细信息时,我希望看到旁边带有相关货币符号的运费,但我希望从我的ViewModel而不是Razor视图中执行此操作。因此,在视图中,我想看到:

200 GBP
180 USD
320 CAD

有没有办法通过ViewModel上的数据属性获取该格式?

不能使用
属性,因为属性是元数据,必须在编译时知道

例如,可以在视图模型中包含只读属性以返回格式化值

public string FormattedAmount
{
    get { return string.Format("{0:#.#} {1}", ShippingCost, ShippingCurrency); }
}
在我看来

<span>@Model.FormattedAmount</span>
<span>@DisplayFor(m => m.ShippingCost)</span><span>@Model.ShippingCurrency </span>
@Model.FormattedAmount
或者,您可以在视图中组合两个属性的值

<span>@Model.FormattedAmount</span>
<span>@DisplayFor(m => m.ShippingCost)</span><span>@Model.ShippingCurrency </span>
@DisplayFor(m=>m.ShippingCost)@Model.ShippingCurrency

您不能使用
属性来执行此操作,因为属性是元数据,必须在编译时知道

例如,可以在视图模型中包含只读属性以返回格式化值

public string FormattedAmount
{
    get { return string.Format("{0:#.#} {1}", ShippingCost, ShippingCurrency); }
}
在我看来

<span>@Model.FormattedAmount</span>
<span>@DisplayFor(m => m.ShippingCost)</span><span>@Model.ShippingCurrency </span>
@Model.FormattedAmount
或者,您可以在视图中组合两个属性的值

<span>@Model.FormattedAmount</span>
<span>@DisplayFor(m => m.ShippingCost)</span><span>@Model.ShippingCurrency </span>
@DisplayFor(m=>m.ShippingCost)@Model.ShippingCurrency

简短的回答是否定的,因为
属性
是元数据,在编译时必须知道它们的值,所以在Razor中打印
发货成本
发货货币
是唯一的方法?如果只是出于显示目的,您可以在模型中拥有一个属性来格式化结果-例如
公共字符串格式化装载{get]{return string.Format(“{0:#.#}{1}”,ShippingCost,ShippingCurrency.ToString());}
好主意,请您写一个答案,以便我将问题标记为已回答。简短的答案是否定的,因为
属性
是元数据,在编译时必须知道它们的值,所以在Razor中打印
发货成本
发货货币
是唯一的方法?您的模型中可以有一个属性如果只是出于显示目的,ich会对结果进行格式化-例如,
public string formattedamount{get{return string.Format({0:#.#}{1})、ShippingCost、ShippingCurrency.ToString());}
好主意,请您写一个答案,以便我将我的问题标记为已回答。