非常に単純なことですが、私はそれを行うための最良の方法を探しています。私はMovieエンティティを持っていますが、各Movieは1つの言語のみにすることができます(英語、フランス語などのルックアップテーブル)。今、私はムービー作成ページ、ムービービューモデルのルックアップで利用可能なすべての言語をロードしようとしています:
namespace Project.ViewModels {
public class Movie {
[Key]
public int ID { get; set; }
public string Title { get; set; }
public string Rating { get; set; }
public string Director { get; set; }
public string Plot { get; set; }
public string Link { get; set; }
public string Starring { get; set; }
public int DateCreated { get; set; }
public string Genre { get; set; }
[Display(Name = "Language")]
public int LanguageID { get; set; }
// Navigational Properties
public virtual MovieLanguage Language { get; set; }
}
}
MovieLanguageビューモデル:
namespace MAKANI.ViewModels {
public class MovieLanguage {
[Key]
public int ID { get; set; }
public string Language { get; set; }
public virtual ICollection<Movie> Movies { get; set; }
}
}
コントローラのアクション:
public ActionResult MovieCreate() {
using (MAKANI.Models.Entities db = new MAKANI.Models.Entities()) {
List<Models.MoviesLanguages> enLanguages = db.MoviesLanguages.ToList();
IEnumerable<SelectListItem> selectList =
from m in enLanguages
select new SelectListItem {
Text = m.Language,
Value = m.ID.ToString()
};
ViewBag.SelectLanguage = selectList.ToList();
return View();
}
}
そして、表示ページで私は持っています
<div class="editor-field">
@Html.DropDownList("Language", ViewBag.SelectLanguage);
</div>
ただし、ビューでこのエラーが発生します: 'System.Web.Mvc.HtmlHelper'には'DropDownList'という名前の適用可能なメソッドがありませんが、その名前の拡張メソッドがあるようです。拡張メソッドを動的にディスパッチすることはできません。動的引数をキャストするか、拡張メソッド構文なしで拡張メソッドを呼び出すことを検討してください
問題が何であるかわからない?
このアプローチに関する別の質問:
- そもそもMovieLanguageエンティティのビューモデルを作成する必要がありますが、それはルックアップテーブルとしてのみ機能することを知っています(したがって、作成/編集/削除アクションは必要ありません。おそらくリスト/読み取りのみ)。その場合、EFエンティティは直接ですか?