如何在ASP.NET MVC中传递多个模型?

Man*_*lue 7 c# linq asp.net asp.net-mvc view

问题是:我想运行3个不同的操作,而不是我希望在更大的模型中从单个操作提供所有数据.

我在用:

public class SearchScrapClass
    {
        public WClass WClass { get; set; }
        public SClass SClass { get; set; }
        public YClass YClass { get; set; }
    }

    public class WClass 
    {
        public string title { get; set; }
        public string link { get; set; }
    }
    public class SClass 
    {
        public string title { get; set; }
        public string link { get; set; }
    }
    public class YClass 
    {
        public string title { get; set; }
        public string link { get; set; }
    }
Run Code Online (Sandbox Code Playgroud)

我正在使用LINQ在这些模型中添加数据.

我在用 :

      var wikians = from info in document.DocumentNode.SelectNodes("//div[@id='span']")
        from link in info.SelectNodes("div//a").Where(x => x.Attributes.Contains("href"))
         select new SearchScrapClass //Main Bigger Class
         {
            WClass.link= link.Attributes["href"].Value, //ERROR: How to add to WClass's url ?
            WClass.title= link.InnerText //ERROR: How to add to WClass's url ?
         }


var wikians = from info in document.DocumentNode.SelectNodes("//div[@id='results']")
               from link in info.SelectNodes("p//a").Where(x => x.Attributes.Contains("href"))
               select new SearchScrapClass //Main Bigger Class
                 {
                   YClass.link= link.Attributes["href"].Value, //ERROR: How to add to YClass's url ?
                   YClass.title= link.InnerText //ERROR: How to add to YClass's url ?
                 }

//Also for the 3rd class (model)


    return View(wikians); //and then return bigger class model so that i can access them in view
Run Code Online (Sandbox Code Playgroud)

这是我想要将数据添加到所有类的链接标题的一种方式.

我的尝试是将数据添加到来自不同来源的所有3个类,并将更大的模型传递给视图,以便我可以访问所有类:

@model SearchScrapClass
@using(Html.BeginForm()) {
    @Html.EditorFor(o => o.WClass.link)
    ...
}
Run Code Online (Sandbox Code Playgroud)

请建议一个方法

谢谢

Bri*_*ian 8

为了扩展我的评论,我建议为组织创建一个ViewModel文件夹.在此添加视图模型

public class SearchScrapClassViewModel
{
    SearchScrapClass searchScrap;
    WClass wClass;
    SClass sClass;
    YClass yClass;
}
Run Code Online (Sandbox Code Playgroud)

在您的控制器中,然后您实例化新的viewmodel

SearchScrapClassViewModel model = new SearchScrapClassViewModel
{
    ....add in your logic to fill your class objects here


}

return view(model);
Run Code Online (Sandbox Code Playgroud)

然后在您的视图中添加viewmodel的使用.

@using SearchScrapClassViewModel
Run Code Online (Sandbox Code Playgroud)