まず、ドロップダウン リストはそれぞれ独自の ViewModel で分離し、できれば部分ビューで出力する必要があることを知っています。
ただし、以下の問題を解決できる場合は、スーパークラス内の 2 つのクラスを使用して設計時にこれをコンパイルするのに問題がある理由を教えてくれます (同じ View.
以下のように記述されたスーパークラスがあるとします。
using System;
using System.Collections.Generic;
using System.Runtime.Serialization;
using System.ServiceModel;
using YeagerTechModel.DropDownLists;
namespace YeagerTechModel.ViewModels
{
[DataContract]
[Serializable]
public partial class CustomerProjectDDL
{
[DataMember]
public Customer Customer = new Customer();
[DataMember]
public ProjectName ProjectName = new ProjectName();
}
}
ProjectName クラスの定義は次のとおりです。
namespace YeagerTechModel.DropDownLists
{
[DataContract]
[Serializable]
public partial class ProjectName
{
[DataMember]
public Int16 ProjectID { get; set; }
[DataMember]
public String Name { get; set; }
}
}
上記を使用しようとすると、メソッドで以下の設計時のコンパイル エラーが発生します。 IEnumerable を実装します。」
public List<CustomerProjectDDL> GetProjectNameDropDownListVM()
{
try
{
using (YeagerTechEntities DbContext = new YeagerTechEntities())
{
DbContext.Configuration.ProxyCreationEnabled = false;
DbContext.Database.Connection.Open();
var project = DbContext.Projects.Where(w => w.ProjectID > 0).Select(s =>
new CustomerProjectDDL()
{
ProjectName.ProjectID = s.ProjectID,
ProjectName.Name = s.Name
});
List<CustomerProjectDDL> myProjects = new List<CustomerProjectDDL>();
myProjects = project.ToList();
return myProjects;
}
}
catch (Exception ex)
{
throw ex;
}
}