简体   繁体   English

Asp.net MVC 4 razor如何在视图中保存列表时如何在控制器中保留类型

[英]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. CompanyACompanyB谁专门Company谁拥有的接口ICompany在我的控制器。 I then load from different databases, companyA and companyB in my List<company> . 然后,我从不同的数据库,装载companyAcompanyB在我的List<company> In my EditorView , I display the different objects companyA and companyB . 在我EditorView ,我显示不同的对象companyAcompanyB

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 . 在保存时,在控制器中,列表中的对象不是类型CompanyACompanyB ,而是它们都是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.

相关问题 如何在ASP.NET MVC中使用Razor View从对象列表中获取控制器中的单个对象 - How to get Single Object in Controller from List of Objects using Razor View in ASP.NET MVC 当我在asp.net mvc控制器操作中验证失败时,如何保留我的URL - how can i keep my url when my validation fail in asp.net mvc controller action ASP.NET MVC Razor:如何在控制器动作中呈现Razor Partial View的HTML - ASP.NET MVC Razor: How to render a Razor Partial View's HTML inside the controller action ASP.NET MVC 3 Razor:将数据从视图传递到控制器 - ASP.NET MVC 3 Razor: Passing Data from View to Controller 在 ASP.NET MVC 中从视图执行控制器 - Razor - Execute a controller from view in ASP.NET MVC - Razor 如何将自定义模型对象从剃刀视图传递到ASP.NET MVC 5中的控制器操作 - How to pass custom model object from razor view to controller action in ASP.NET MVC 5 ASP.NET MVC-如何在Webapi控制器返回的Razor视图中显示数据 - ASP.NET MVC - How to display data in Razor view returned from Webapi controller 何时在ASP.Net MVC 5中使用我的剃刀语法视图中的@using - When to use @using in my razor syntax view in ASP.Net MVC 5 如何在ASP.NET MVC 4 Razor项目的视图中显示集合? - How to display a collection in View of ASP.NET MVC 4 Razor project? ASP.NET MVC 3 Razor View限制 - ASP.NET MVC 3 Razor View Restrictions
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM