我有一个viewmodel类:
public class OrderLine {
public string CurrencyCode { get; set; }
public decimal PriceExVat { get; set; }
public decimal PriceIncVat { get; set; }
}
我已经定义了一个自定义DisplayTemplate Currency.cshtml来格式化货币。
@Html.DisplayFor(m => m.PriceExVat, "Currency")
@Html.DisplayFor(m => m.PriceIncVat, "Currency")
Currency.cshtml
@model decimal?
@Model.ToString() // here I need a reference to container to get the CurrencyCode
我知道我可以使用additionalViewData将对容器对象的引用传递给显示模板:
@Html.DisplayFor(m => m.PriceIncVat, "Currency", new { conatiner = Model })
我只是想知道它是否已经在模板中可用。从ModelMetadata我只能获得ContainerType。
由于
答案 0 :(得分:1)
为此,您最好的选择是创建自定义类:
public class Currency {
public decimal Amount { get; set; }
public string CurrencyCode { get; set; }
}
然后是OrderLine
:
public class OrderLine {
public Currency PriceExVat { get; set; }
public Currency PriceIncVat { get; set; }
}
在DisplayFor
来电中,您可以删除额外的参数,因为它会使用类型名称:
@Html.DisplayFor(m => m.PriceExVat
然后在 DisplayTemplates 文件夹中的 currency.cshtml 中:
@model Currency
@(CurrencyCode): @Amount
这样的东西会给你我想要的东西。