[英]Asp.net mvc 4 razor How keep types in my Controller when saving a list in a view
I have a big problem and I'm a little bit disappointed. 我有一个大问题,我有点失望。 I can't find a good solution with this problem: 我找不到这个问题的好解决方案:
I have CompanyA
and CompanyB
who specialize Company
who has an interface ICompany
in my controller. 我CompanyA
和CompanyB
谁专门Company
谁拥有的接口ICompany
在我的控制器。 I then load from different databases, companyA
and companyB
in my List<company>
. 然后,我从不同的数据库,装载companyA
和companyB
在我的List<company>
。 In my EditorView
, I display the different objects companyA
and companyB
. 在我EditorView
,我显示不同的对象companyA
和companyB
。
When I'm saving, in my controller, my objects in my list aren't to type CompanyA
and CompanyB
, but they are all of type Company
. 在保存时,在控制器中,列表中的对象不是类型CompanyA
和CompanyB
,而是它们都是Company
类型。
How can I keep my types when I save? 保存时如何保留类型?
Here is some code if my explanation is not clear: 如果我的解释不清楚,这是一些代码:
My example CompanyViewModel.cs: 我的示例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
}
OR I can have: 或者我可以拥有:
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();
}
in view 鉴于
@Html.EditorFor(m => m.Companies)
and i have EditorTemplate with Company.cshtml, CompanyA.cshtml, CompanyB.cshtml 我有带有Company.cshtml,CompanyA.cshtml,CompanyB.cshtml的EditorTemplate
During my load in View, each object in my list go to the right EditorTemplate (CompanyA and CompanyB) 在View中加载期间,列表中的每个对象都转到正确的EditorTemplate(CompanyA和CompanyB)
But when i save... I have a list of company type only ... 但是当我保存...时,我仅列出公司类型...
Any ideas? 有任何想法吗? Thank you! 谢谢!
What I did is: 我所做的是:
I created a view with Company as model, and a partial view with CompanyA as model, and another view with CompanyB as model. 我以Company为模型创建了一个视图,以CompanyA为模型创建了一个局部视图,并以CompanyB为模型创建了另一个视图。 Inside CompanyView, I called Html.Partial("CompanyAView", Model)
and Html.Partial("CompanyBView", Model)
. 在CompanyView内部,我调用了Html.Partial("CompanyAView", Model)
和Html.Partial("CompanyBView", Model)
。
I hope this helps. 我希望这有帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.