![](/img/trans.png)
[英]How to get Single Object in Controller from List of Objects using Razor View in ASP.NET MVC
[英]Asp.net mvc 4 razor How keep types in my Controller when saving a list in a view
我有一个大问题,我有点失望。 我找不到这个问题的好解决方案:
我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
在View中加载期间,列表中的每个对象都转到正确的EditorTemplate(CompanyA和CompanyB)
但是当我保存...时,我仅列出公司类型...
有任何想法吗? 谢谢!
我所做的是:
我以Company为模型创建了一个视图,以CompanyA为模型创建了一个局部视图,并以CompanyB为模型创建了另一个视图。 在CompanyView内部,我调用了Html.Partial("CompanyAView", Model)
和Html.Partial("CompanyBView", Model)
。
我希望这有帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.