我想为mvc页面做一个这样的模型:

public class Body
{
    public int Id { get; set; }

    public class Hand
    {
        public List<Fingers> fingers { get; set; }
    }

    public class Foot
    {
        public List<Toes> toes { get; set; }
    }

    public class Head
    {
        public Nose nose {get; set;}
        public List<Ears> ears { get; set; }
        public List<Eyes> eyes { get; set; }
    }
}

那就上这样的手指课:
public class Fingers
{
    public int Id { get; set; }
    public string Description { get; set; }
}

然后在我的视图中这样访问它:
@model Models.Body
@foreach (var fingers in Model.Hand.Fingers)
{
    @Html.RadioButton("fingerList", fingers.Description)
}

我做错模特了吗?现在vs不能识别Model.Hand中的foreach,更不用说Model.Hand.Fingers。我不想创建@modelIEnumerable,因为此页应该只显示一个person,但它可以有多个fingerstoes等列表。

最佳答案

您的Body类上没有属性Hand
除此之外,你的hand类有fingers但是在razor中你用Fingers来引用它。
我不知道您是否真的打算将类嵌套,但是您需要为您想要的类在Body类中添加属性(遵循您的属性大小写约定):

public class Body
{
    public int Id { get; set; }
    public Hand hand { get; set; }
    public Foot foot { get; set; }
    public Head head { get; set; }

    public class Hand
    {
        public List<Fingers> fingers { get; set; }
    }

    public class Foot
    {
        public List<Toes> toes { get; set; }
    }

    public class Head
    {
        public Nose nose {get; set;}
        public List<Ears> ears { get; set; }
        public List<Eyes> eyes { get; set; }
    }
}

然后需要引用与属性大小写匹配的属性,而不是类名:
@model Models.Body
@foreach (var fingers in Model.hand.fingers)
{
    @Html.RadioButton("fingerList", fingers.Description)
}

我也认为你的大小写不正确,但这不是你的问题所在。

07-28 07:51