如何让@ Html.DisplayFor()在对象上使用ToString()?

时间:2018-05-03 03:19:33

标签: c# asp.net-mvc razor

PurchaseOrderModel.cs

public class PurchaseOrderModel {
    public SupplierModel Supplier { get; set; }
}

SupplierModel.cs

public class SupplierModel {
    public string Code { get; set; }
    public string Name { get; set; }

    public override string ToString() {
        return $"{Name} ({Code})";
    }
}

PurchseOrdersReport.cshtml

@Html.DisplayFor(purchaseOrder => purchaseOrder.Supplier)

我希望Razor引擎调用ToString()的{​​{1}}方法。但事实并非如此,我得到了以下HTML输出:

Supplier

2 个答案:

答案 0 :(得分:0)

我发现Stack溢出的另一个主题概述了以下解决方案。请参阅How to show the model's attribute dynamically in mvc?

@ Html.DisplayFor(...)有一个过载需要两个参数。

@Html.DisplayFor(purchaseOrder => purchaseOrder.Supplier, Model.Supplier.ToString())

答案 1 :(得分:0)

尝试使用

@(Model.PropertyType.ToString())

或者只是

@Model.PropertyType

而不是@Html.DisplayFor