私は大きな問題を抱えており、少しがっかりしています。私はこの問題の良い解決策を見つけることができません:
私は持ってCompanyA
いて、誰が
私のコントローラーにインターフェースを持っているのCompanyB
かを専門としています。次に、さまざまなデータベースからロードします。私のでは、さまざまなオブジェクトとを表示します。Company
ICompany
companyA
companyB
List<company>
EditorView
companyA
companyB
保存しているとき、コントローラーで、リスト内のオブジェクトはタイプCompanyA
とCompanyB
ではありませんが、すべてタイプCompany
です。
保存するときにタイプを保持するにはどうすればよいですか?
私の説明が明確でない場合のコードは次のとおりです。
私の例CompanyViewModel.cs:
public class CompanyViewModel
{
#region Properties
public User User { get; set; }
public ExternalAccounts ExtAccounts { get; set; }
public List<Company> Companies { get; set; } // or List<object> Companies { get; set; }
....
#region Ctor
public CompanyViewModel()
{ }
public CompanyViewModel(ExternalAccounts extAccount, bool iniPrefLanguage = true)
{
//normaly it's load from bdd
...
Companies = new List<Company>();
if (test == true)
{
Companies.Add(new CompanyA()); // call webService
}
if (test2 == true)
{
Companies.Add(new CompanyB());
}
...
#region
}
または私は持つことができます:
public ActionResult EditCompanies()
{
...
// Companies = new List<Company>();
Model.Companies.Add(new CompanyA()); // call webService
Model.Companies.Add(new CompanyB());
return View(Model);
}
public ActionResult SaveCompanies(ComapnyViewModel model)
{
var test = model.Companies.OfType<CompanyA>(); // return null !!!
test = model.Companies.OfType<CompanyB>(); // return null !!!!
test = model.Companies.OfType<Company>(); // return my objects !!!!
return View();
}
ビューで
@Html.EditorFor(m => m.Companies)
そして私はCompany.cshtml、CompanyA.cshtml、CompanyB.cshtmlのEditorTemplateを持っています
ビューにロードしている間、リスト内の各オブジェクトは適切なEditorTemplate(CompanyAおよびCompanyB)に移動します
しかし、保存すると...会社タイプのリストしかありません...
何か案は?ありがとうございました!