在视图

时间:2017-05-17 14:07:23

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

我有一个ASP .Net Core MVC 1.1网络应用程序。在其中,我有一个视图 - 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>

在上面,&#34; PropertyType&#34;是一个看起来像这样的类:

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绑定到要显示的属性类型的字段?或者是否有一个我不知道的更优雅的解决方案?

...谢谢

1 个答案:

答案 0 :(得分:2)

一个选项很简单:

@Model.PropertyType.ToString()