我想为这样的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
。我不想制作@model
IEnumerable
,因为此页面只应显示一个person
,但它可以有多个fingers
,toes
列表,等
答案 0 :(得分:6)
您的Body
课程上没有属性Hand
。
除此之外,你的Hand课程有fingers
,但在剃须刀中你用Fingers
引用它。
我不知道你是否真的打算让你的课程嵌套,但是你需要在你的Body
课程中添加你想要的属性(坚持你的属性大写惯例): / p>
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)
}
我还认为你的套管/大写不正确,但这不是你问题的重点。
答案 1 :(得分:2)
由于您正在访问模型的Hand属性(Body类型),因此您应该将一个名为Hand的属性添加到Body类中。
public class Hand
{
public List<Fingers> Fingers { get; set; }
}
public class Body
{
public int Id { get; set; }
public Hand Hand {set;get;}
public Foot Foot { set;get;}
public Head Head { set;get;}
}
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; }
}
现在,在您的GET操作中,您需要初始化Hand
属性
public ActionResult Index()
{
var vm = new Body { Hand= new Hand { Fingers = new List<Finger>()} };
return View(vm);
}
答案 2 :(得分:2)
我认为您需要在Fingers
类中使用名为Body
的属性,而不是名为Hand
的嵌套类:
public List<Fingers> Fingers { get; set; }
然后你可以:
@foreach (var fingers in Model.Fingers)
{
@Html.RadioButton("fingerList", fingers.Description)
}
答案 3 :(得分:2)
您没有将属性添加到Body类!?
public class Body
{
public int Id { get; set; }
public Hand Hand {get;set;}
public Foot Foot {get;set;}
public Head Head {get;set;}
}
答案 4 :(得分:2)
在我看来,你的模型缺少一些itinialization;还没有召集人。所以......
public class Hand
{
public Hand()
{
Fingers = new List<Fingers>();
}
}
Hand
属性也是如此。可能null
,您的foreach loop
无效。
附注:不要将您的班级名称复数。它应该是Finger
和Toe
,因为您有一个列表。