【发布时间】:2012-06-09 16:59:10
【问题描述】:
问题是:我想运行 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
这是我想将数据添加到所有类的 link 和 title 的一种方式。
我的尝试是将数据添加到来自不同来源的所有 3 个类,并将更大的模型传递给查看,以便我可以访问所有类:
@model SearchScrapClass
@using(Html.BeginForm()) {
@Html.EditorFor(o => o.WClass.link)
...
}
请推荐一个方法
谢谢
【问题讨论】:
-
创建一个将所有三个模型联系在一起的视图模型并将视图键入该视图模型。
-
我很困惑为什么你有 3 个看起来都一样的不同类?为什么不只使用同一类的 3 个不同实例?
-
@hermiod :实际上我展示的逻辑看起来很相似[稍作修改],但它们获取 url 和内容的来源不同。所以我需要不同的课程。
-
@Brian 是正确的。在 MVC 中执行此操作的“正确”方法是创建一个包含这三个类的 ViewModel。这些类是数据模型。 ViewModel 是另外一回事,它应该包含您的视图正确渲染所需的一切。
标签: c# asp.net asp.net-mvc linq view