我想创建我的模型的几个实例:
public int RestrictionID{get;set}
public string portefeuille{get;set;}
public int Min{get;set;}
public int Max{get;set;}
所以我创建了一个ViewModel:
public int ViewModelID{get;set;}
public ICollection<Restriction> Restrictions{get;set;}
但是当使用实体框架,并尝试创建ViewModel的实例(即限制的几个实例)时,没有任何内容出现(用户没有输入),就好像编译器不知道如何表示输入一样限制。所以我想要的是完全相同的输入(属性)被填充严重时间说4次。 我怎样才能做到这一点?我需要一些帮助......
谢谢!
答案 0 :(得分:0)
ViewModelID是否可用于任何目的?如果没有,您只需将视图键入IEnumerable of Restriction对象,如下所示:
@model IEnumerable<Restriction>
然后,在您的视图中,您可以像对待其他任何内容一样枚举集合:
@foreach (var restriction in Model)
{
@Html.DisplayFor(_ => restriction.portefeuille)
etc....
}
但值得注意的是,如果您希望能够编辑和回发模型的多个实例,则需要使用索引循环,如下所示:
@for (int i=0; i < Model.Count; i++)
{
@Html.EditorFor(_ => Model[i].portefeuille)
etc...
}
这允许模型绑定器正确绑定值。
如果你确实需要ViewModelId,那么无论如何都要使用ViewModel(最好还是使用它们),同样的技术仍然适用。
答案 1 :(得分:0)
您的问题有点难以理解,但我认为您的问题仅仅是您尚未初始化Restrictions
。例如:
model.Restrictions = new List<Restriction>
{
new Restriction(),
new Restriction(),
new Restriction(),
new Restriction()
}
在视图中渲染此集合后,会为您提供四组Restriction
字段。您可能还需要执行以下操作:
for (var i = 0; i < 4; i++)
{
model.Restrictions.Add(new Restriction);
}
这一点不那么冗长,特别是如果你有超过4件物品。无论哪种方式,我们的想法是,您需要在集合中为要在页面上呈现的每组字段设置一个实际的Restriction
实例。
如果您需要动态添加更多内容,这是一个完全不同的问题,需要使用JavaScript。