一些非常简单的事情,但我正在寻找最好的方法来做到这一点。我有一个电影实体,每部电影只能使用一种语言(英语、法语等查找表)。现在我正在尝试在电影创建页面的查找中加载所有可用的语言,即电影视图模型:
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实体?