首页 > 解决方案 > 如何使 @Html.DisplayFor() 在对象上使用 ToString()?

问题描述

采购订单模型.cs

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

供应商模型.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()调用Supplier. 但事实并非如此,我得到了以下 HTML 输出:

<div class="display-label">Code</div>
<div class="display-field">USSCIESTMI</div>
<div class="display-label">Name</div>
<div class="display-field">MY SUPPLIER NAME</div>

标签: c#asp.net-mvcrazor

解决方案


尝试使用

@(Model.PropertyType.ToString())

或者干脆

@Model.PropertyType

代替@Html.DisplayFor


推荐阅读