簡體   English   中英

Asp.net MVC 4 razor如何在視圖中保存列表時如何在控制器中保留類型

[英]Asp.net mvc 4 razor How keep types in my Controller when saving a list in a view

我有一個大問題,我有點失望。 我找不到這個問題的好解決方案:

CompanyACompanyB誰專門Company誰擁有的接口ICompany在我的控制器。 然后,我從不同的數據庫,裝載companyAcompanyB在我的List<company> 在我EditorView ,我顯示不同的對象companyAcompanyB

在保存時,在控制器中,列表中的對象不是類型CompanyACompanyB ,而是它們都是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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM