[英]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.