为什么我的模型属性没有反映在剃须刀自动生成的视图中?(MVC 4)

本文关键字:视图 MVC 自动生成 剃须刀 属性 模型 我的 为什么 | 更新日期: 2023-09-27 18:33:13

我刚开始学习MVC。所以,这是我的模型类

public class Patient : iPatient, iPerson
{
    public string name { get; set; }
    public int age { get; set; }
    public DateTime dateOfBirth { get; set; }
    public Address address { get; set; }
    public string bloodGroup { get; set; }
}

因此,当我右键单击控制器的操作方法并添加视图时,脚手架会产生如下所示的视图:

<table>
<tr>
    <th>
        @Html.DisplayNameFor(model => model.name)
    </th>
    <th>
        @Html.DisplayNameFor(model => model.age)
    </th>
    <th>
        @Html.DisplayNameFor(model => model.dateOfBirth)
    </th>
    <th>
        @Html.DisplayNameFor(model => model.bloodGroup)
    </th>
    <th></th>
</tr>

它不会产生类似 @Html.DisplayNameFor(model=>model.Address.City) .

为什么会有这种行为?

我是否需要在视图中手动添加它,或者是否有任何解决方法?

提前感谢您的回答。

为什么我的模型属性没有反映在剃须刀自动生成的视图中?(MVC 4)

如果我

错了,有人可以纠正我,但我不相信自动脚手架会对子对象类型做任何事情,它只是为基本类型搭建脚手架。 您可以自己添加它们,尽管这很容易。

可以使用的一种方法是创建地址的强类型部分视图。

然后,在此视图的代码中,您必须添加的只是

@Html.Partial(Model.Address)

并且将显示位于部分视图中的所有地址字段。