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

本文关键字:模型 视图 MVC ASP NET | 更新日期: 2023-09-27 18:36:16

>问题是:我想运行 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; }
    }

我正在使用 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

这是我想将数据添加到所有类的链接和标题一种方法。

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

@model SearchScrapClass
@using(Html.BeginForm()) {
    @Html.EditorFor(o => o.WClass.link)
    ...
}

请建议一种方法

谢谢

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

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

public class SearchScrapClassViewModel
{
    SearchScrapClass searchScrap;
    WClass wClass;
    SClass sClass;
    YClass yClass;
}

在控制器中,实例化新的视图模型

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

}
return view(model);

然后在视图中添加视图模型的用途。

@using SearchScrapClassViewModel

您可以通过创建一个包含多个对象的新模型类来传递多个模型。

public class MultiModel 
    {
     SearchScrapClass searchScrap;
     WClass wClass;
     SClass sClass;
     YClass yClass;
    }

请参阅元组教程 http://www.dotnetperls.com/tuple 或这个教程 http://msdn.microsoft.com/en-us/library/system.tuple(v=vs.110).aspx

像控制器一样:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        var first = new FirstModel();
        var second = new SecondModel();
        return View(Tuple.Create(first,second));
    }
}

和观点:

@model元组

<div> 
    @Model.Item1.FirstModelProp
    @Model.Item2.SecondModelProp
</div>
SearchScrapClassViewModel model = new SearchScrapClassViewModel
{
    ....add in your logic to fill your class objects here

}

我们在这里应用什么逻辑" ....添加您的逻辑以在此处填充您的类对象"