0

这一定是一种常见的情况,也许我只是在搜索错误的术语......

我有一个使用 EF Code First 的 ASP.NET MVC 项目。

我有一个用于电子邮件类型的对象/表/控制器(例如家庭、工作、学校)。对象很简单,只有一个 ID 和一个 Name 字段。这使得管理各种电子邮件类型变得容易。

我有另一个用于电子邮件的对象/表/控制器。它有一个 ID、名称(例如 bob@me.com)和 EmailType 属性。

在创建新电子邮件的视图中,我有一个文本框来输入电子邮件地址。我还需要在此处放置一个下拉列表,以便可以选择 EmailType 并将其分配给电子邮件。我认为这是非常标准的东西。

所以...在我的 EmailController 中,Create()函数只返回一个 View()。

我还需要返回数据来填充 EmailType 下拉列表。

我该如何做到这一点?

(注意:我想我可以使用 JQuery/AJAX 来提取这些数据,我也可以将其填充到 ViewBag 或类似的东西中,但似乎应该有更直接的方法?)

4

1 回答 1

3

根据我的经验,严格为每个实体设置一个控制器是徒劳的。也就是说,控制器操作可以而且应该能够与不止一种类型的实体一起使用。我认为在这种情况下最好的选择是将用于检索 EmailTypes 列表的代码抽象为服务类,然后从EmailController.Create()EmailTypesController.Index().

然后,您可以将该属性添加IList<SelectListItem> EmailTypes { get; set; }到操作视图的 ViewModel EmailController.Create()

于 2012-10-15T22:00:07.840 回答