Output metode dropdownlist ICollection sesuai dengan permintaan formulir koleksi

Saya memiliki 2 model (Film dan Aktor)

Saya sudah dapat mengambil daftar Film yang berisi Aktor yang dipilih. Dan saya bisa menampilkan semuanya melalui Html.DisplayNameFor. Tapi saya ingin menggunakan DDL untuk menampilkan Icollection Actors alih-alih siklus dengan subitem di @Html.DisplayNameFor(model => model.Actors). Jadi saya perlu dropdownlist yang berhubungan dengan SelectedList Actor. output default adalah semua/ Dan jika saya memilih parameter Film tertentu seperti Genre atau Anggaran maka DDL dengan Aktor harus sesuai dengan ini.

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; }
}

Saya menyadari keluaran dengan

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

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

Dengan koleksi Actors saya memerlukan formulir lain untuk setiap baris keluaran saya. Karena setiap film bisa memiliki banyak aktor. Jika Aktor memiliki banyak kolom, bagaimana cara menyembunyikannya? Atau menghasilkan sejumlah kuantitas dengan kemampuan untuk mengembangkannya? Saya memilih untuk menambahkannya ke DropDownList. Mungkin beberapa bentuk AJAX baru atau elemen asp.net bisa menjadi alternatif yang baik.

Oleh karena itu saya memiliki MovieController:

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

return View(Movie.ToList());

Ini mengembalikan film. Bagaimana cara mengambil Actors.Name (string) dari Movie yang sesuai dengan Aktor ICollection?

Saya akan menambahkan string ini ke DDL.


person streamc    schedule 18.06.2016    source sumber
comment
Saya tidak begitu mengerti pertanyaannya? Apakah Anda ingin nama Aktor pertama atau Daftar aktor berdasarkan film? seperti yang Anda katakan, Anda membutuhkan string   -  person SWilko    schedule 18.06.2016
comment
Saya sudah dapat mengambil daftar Film yang berisi Aktor yang dipilih. Dan saya bisa menampilkan semuanya melalui Html.DisplayNameFor. Tapi saya ingin menggunakan DDL untuk menampilkan Icollection Actors alih-alih siklus dengan subitem di @Html.DisplayNameFor(model =› model.Actors). Jadi saya perlu dropdownlist yang berhubungan dengan SelectedList Actor. output default adalah semua/ Dan jika saya memilih parameter Film tertentu seperti Genre atau Anggaran maka DDL dengan Aktor harus sesuai dengan ini. Terima kasih! Cobalah untuk lebih jelas. Saya mengedit pertanyaan saya.   -  person streamc    schedule 19.06.2016
comment
Apa sebenarnya pertanyaan Anda? Bagaimana cara menampilkan daftar drop-down?   -  person Gert Arnold    schedule 19.06.2016
comment
Daftar tarik-turun keluaran dengan Koleksi Aktor yang berubah secara dinamis tergantung pada Film yang saya pilih,   -  person streamc    schedule 19.06.2016


Jawaban (1)


Coba ini

var actors = Movie.Where(c => c.Actors.Any(i => i.Name.Contains(SearchActor))).SelectMany(i => i.Actors);
person NEER    schedule 18.06.2016
comment
Saya membuat ini sebelumnya. Tapi bagaimana cara menambahkannya ke Dropdownlist? var AllActors = Film.Di Mana(c =› c.Actors.Any(i =› i.Name.Contains(SearchActor))).SelectMany(u =› u.Actors); var ActorLst = Daftar baru‹string›(); ActorLst.AddRange(SemuaActors.Distinct()); Dan saya mendapatkan Kesalahan konversi - person streamc; 19.06.2016
comment
Lihat stackoverflow.com/questions/18382311/ @ifooi - person NEER; 19.06.2016
comment
Ok terima kasih. Saya mengubah daftar string menjadi daftar Aktor. Dan saya akan membaca. - person streamc; 19.06.2016
comment
Film.Dimana(c =› c.Actors.Any(i =› i.Name.Contains(SearchActor))).SelectMany(i =› i.Actors).Select(i =› new { i.Name}) @ jikaooi - person NEER; 19.06.2016
comment
var AllActors = Film.Dimana(c =› c.Actors.Any(i =› i.Name.Contains(SearchActor))).SelectMany(i =› i.Actors).Select(i =› new { i.Name }); var ActorLst = Daftar baru‹string›(); ActorLst.AddRange(SemuaActors.Distinct()); tidak dapat mengonversi dari 'System.Linq.IQueryable‹‹tipe anonim: nama string››' ke 'System.Collections.Generic.IEnumerable‹string›' Maaf kawan. Dan terima kasih. - person streamc; 19.06.2016
comment
Cukup ubah baru { i.Name menjadi i.Name @ifooi - person NEER; 19.06.2016
comment
Ya, ini berfungsi dengan benar dan setengah jalan tetapi saya perlu berpikir lebih total. Dengan var AllActors = Movie.Where(c =› c.Actors.Any(i =› i.Name.Contains(SearchActor))).SelectMany(i =› i.Actors).Select(i =› i.Name) ; Saya hanya dapat menampilkan aktor untuk aktor terpilih. Itu bagus tetapi ketika saya memilih film yang konstruksinya menghasilkan semua aktor meskipun tidak semuanya ada di Film, Logikanya saya rasa saya perlu menambahkan lebih banyak Berisi ke var. - person streamc; 19.06.2016
comment
Dan tambahkan beberapa kondisi logis. - person streamc; 19.06.2016