2016-06-18 4 views
1

У меня есть 2 модели (Фильмы и Актеры)Выходного ICollection метод DropDownList, соответствующий сбор формы запроса

Я уже получить список Movie, который содержит выбранные актер. И я могу вывести все это через Html.DisplayNameFor. Но я хочу использовать DDL для вывода Icollection Actors вместо цикла с subitem в @ Html.DisplayNameFor (model => model.Actors). Поэтому мне нужно, чтобы dropdownlist соответствовал ролиSelectedList. выход по умолчанию - все/И если я выбираю конкретный параметр фильма, то этот жанр или бюджет, чем DDL с актерами, должен соответствовать этому.

public class Movie 
{ 
    public int MovieID { get; set; } 
    public string Title { get; set; } 
    public string Date { get; set; } 
    public int Budget { get; set; } 
    public string Genre { get; set; } 
    public virtual ICollection<Actor> Actors { get; set; } 
} 

public class Actor 
{ 
    public int ID { get; set;} 
    public string Name { get; set; } 
    public virtual ICollection<Movie> Movies { get; set; } 
} 

Я понимаю, что выход с

<th> 
     @Html.DisplayNameFor(model => model.Genre) 
    </th>........................ 

    <th>......................... 
     @Html.DisplayNameFor(model => model.Actors) 
    </th>............... 

С Actors коллекция мне нужна другая форма для каждой строки моего выхода. Потому что у каждого фильма может быть много актеров. Если у актеров много столбцов, как я могу скрыть это? Или вывести некоторое количество с возможностью его расширения? Я хочу добавить их в DropDownList. Возможно, какая-то новая форма AJAX или элемент asp.net были бы хорошей альтернативой.

Поэтому у меня есть MovieController:

if (!String.IsNullOrEmpty(SearchActor)) 
{    
    Movie = Movie.Where(c => c.Actors.Any(i => i.Name.Contains(SearchActor))); 
} 

return View(Movie.ToList()); 

возвращает фильм. Как я могу получить Actors.Name (строка) от Movie, соответствующего аккорду ICollection?

Я бы добавил эту строку в DDL.

+0

Я не совсем понял вопрос? Вы хотите, чтобы первое имя Актера или список актеров по фильму? как вы говорите, вам нужна строка – SWilko

+0

Я уже могу получить список фильмов, в котором есть выбранные участники. И я могу вывести все это через Html.DisplayNameFor. Но я хочу использовать DDL для вывода Icollection Actors вместо цикла с subitem в @ Html.DisplayNameFor (model => model.Actors). Поэтому мне нужно, чтобы dropdownlist соответствовал ролиSelectedList. выход по умолчанию - все/И если я выбираю конкретный параметр фильма, то этот жанр или бюджет, чем DDL с актерами, должен соответствовать этому. Благодаря! Старайтесь быть более ясными. Я редактирую свой вопрос. – ifooi

+0

В чем ваш вопрос? Как показать раскрывающийся список? –

ответ

1

Попробуйте

var actors = Movie.Where(c => c.Actors.Any(i => i.Name.Contains(SearchActor))).SelectMany(i => i.Actors); 
+0

Я сделал это раньше. Но как я могу добавить его в Dropdownlist? var AllActors = Movie.Where (c => c.Actors.Any (i => i.Name.Contains (SearchActor))). SelectMany (u => u.Actors); var ActorLst = новый Список (); ActorLst.AddRange (AllActors.Distinct()); И я получаю сообщение об ошибке – ifooi

+1

Проверьте http://stackoverflow.com/questions/18382311/populating-a-razor-dropdownlist-from-a-listobject-in-mvc @ifooi – NEER

+0

Хорошо, спасибо. Я меняю список строк на список Актера. И я читал. – ifooi