razor - 在 View 中显示对象 ToString() 值

标签 razor view asp.net-core-mvc tag-helpers

我有一个 ASP .Net Core MVC 1.1 Web 应用程序。在其中,我有一个 View - Details.cshtml,它仅显示选定的记录:

@model InspectionsData.Models.House

@{
    ViewData["Title"] = "Details";
}

<h2>Details</h2>

<div>
    <dl class="dl-horizontal"> 
        @*<dd>
            @Html.DisplayFor(model => model.Id)
        </dd>*@
        <dt>
            @Html.DisplayNameFor(model => model.Street1)
        </dt>
        <dd>
            @Html.DisplayFor(model => model.Street1)
        </dd>
        <dt>
            @Html.DisplayNameFor(model => model.Street2)
        </dt>
        <dd>
            @Html.DisplayFor(model => model.Street2)
        </dd>
        <dt>
            @Html.DisplayNameFor(model => model.Street3)
        </dt>
        <dd>
            @Html.DisplayFor(model => model.Street3)
        </dd>
        <dt>
            @Html.DisplayNameFor(model => model.City)
        </dt>
        <dd>
            @Html.DisplayFor(model => model.City)
        </dd>
        <dt>
            @Html.DisplayNameFor(model => model.Region)
        </dt>
        <dd>
            @Html.DisplayFor(model => model.Region)
        </dd>
        <dt>
            @Html.DisplayNameFor(model => model.Country)
        </dt>
        <dd>
            @Html.DisplayFor(model => model.Country)
        </dd>
        <dt>
            @Html.DisplayNameFor(model => model.PropertyType)
        </dt>
        <dd>
            @Html.DisplayFor(model => model.PropertyType)
        </dd>
    </dl>
</div>
<div>
    <a asp-action="Edit" asp-route-id="@Model.Id">Edit</a> |
    <a asp-action="Index">Back to List</a>
</div>

在上面,“PropertyType”是一个如下所示的类:

public partial class PropertyType
    {
        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public int Id { get; set; }
        public string PropertyTypeName { get; set; }
        public override string ToString()
        {
            return PropertyTypeName;
        }
    }

如您所见,我重写了 ToString() 方法,希望 View 在渲染时执行 ToString(),从而显示 PropertyType 的值,但它并没有这样做。所以它只是空白。我认为我尝试这样做:

@Html.DisplayFor(model => model.PropertyType.ToString())

但它一点也不喜欢这一点(错误:InvalidOperationException:模板只能与字段访问、属性访问、一维数组索引或单参数自定义索引器表达式一起使用) 我是否必须向 PropertyType 类添加一个字符串字段并将 View 绑定(bind)到该字段才能显示属性类型?或者是否有一个我不知道的更优雅的解决方案?

谢谢...

最佳答案

一个选择非常简单:

@Model.PropertyType.ToString()

关于razor - 在 View 中显示对象 ToString() 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44027214/

相关文章:

java - convertView.getTag();创建转换错误

asp.net-mvc - MVC 6 中 @Json.Encode 或 @Json.Decode 方法在哪里?

visual-studio-2015 - 如何从 VS 2015 ASP.NET 5 MVC6 中的 Controller 生成 View

jquery - 使用 jQuery 在 ASP.NET MVC 3 中使用 BeginCollectionItem 动态添加行到 html 表时的行和列对齐

html - 如何更优雅地禁用按钮

laravel - 如何实例化 Illuminate\Contracts\View\Factory?

c# - 调用.Net Core API的.Net Core Controller 的单元测试用例

javascript - Razor 渲染问题

javascript - Kendo UI 多个文件上传问题

Mysql:创建一个仅显示一对多关系子集的 View