在一个页面asp.net mvc中创建模型的多个实例

时间:2014-09-08 15:18:42

标签: c# asp.net asp.net-mvc

我想创建我的模型的几个实例:

    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次。 我怎样才能做到这一点?我需要一些帮助......

谢谢!

2 个答案:

答案 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。