2014-09-08 2 views
0

Я хочу создать несколько экземпляров моей модели:Создайте несколько экземпляров модели на одной странице 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 (это несколько экземпляров Restriction), ничего не отображается (нет ввода для пользователя), так же, как если бы компилятор не знал, как представить вход ограничений. Поэтому я хочу, чтобы точно такой же ввод (свойства) был заполнен суровыми временами, скажем, 4 раза. Как я могу это достичь? Мне нужна помощь ..

Спасибо!

+3

Вы можете показать, где вы создаете свою модель? И где вы показываете его пользователю – Jonesopolis

ответ

0

Поддерживает ли ViewModelID любую цель? Если нет, то вы можете просто ввести свой вид на IEnumerable объектов, ограничивающих, например, так:

@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... 
} 

Это позволяет модели связующей к правильно бену d значения.

Если вам нужен ViewModelId, то, во всяком случае, используйте ViewModel (это хорошая практика, чтобы использовать их в любом случае), и те же методы все еще применяются.

+0

Да точно ViewModelID ни для чего не служит! – intern

+0

Но проблема в том, что мы не можем применить индексацию [i] к элементу типа IEnumerable У меня есть ошибка. – intern

+0

Ах да. Честная оценка. В этом случае вы хотите объявить его как Список. – chipples

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.