如何在 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)
...
}
请建议一种方法
谢谢
为了扩展我的评论,我建议为组织起见创建一个 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
}
我们在这里应用什么逻辑" ....添加您的逻辑以在此处填充您的类对象"