[英]Assign Value in List<T> when T model itself has List<T> as a property
我需要编码帮助。 我有3个类SiteMapSection(保存sectionUrl和SiteMapSubSection的列表),SiteMapSubSection(保存subSectionUrl和SiteMapArticle的列表)和SiteMapArticle。 这是类的结构。
public class SiteMapSection
{
public string sectionUrl { get; set; }
public List<SiteMapSubSection> subSection { get; set; }
}
public class SiteMapSubSection
{
public string subSectionUrl { get; set; }
public List<SiteMapArticle> article { get; set; }
}
public class SiteMapArticle
{
public string url { get; set; }
}
现在,我将上述类用作模型来分配值:
var siteMapSection = new List<SiteMapSection>();
DL.SectionArticle sa = new NewsFeed.BusinessTier.DataAccessLayer.SectionArticle();
foreach (BE.Section section in BL.Sections.Find(websiteId, parentSectionId))
{
int sectionId = section.Id;
siteMapSection.Add(new SiteMapSection { sectionUrl = BL.Sections.VirtualPath(section) + ".aspx" });
Debug.WriteLine(siteMapSection[0].sectionUrl);
foreach (BE.Section subsection in BL.Sections.Find(websiteId, sectionId))
{
int subSectionId = subsection.Id;
var smss = new List<SiteMapSubSection>();
smss.Add(new SiteMapSubSection { subSectionUrl = BL.Sections.VirtualPath(subsection) + ".aspx" });
Debug.WriteLine(smss[0].subSectionUrl);
var articles = sa.GetArticlesForSection(websiteId, subSectionId, 10);
foreach (var article in articles)
{
var sma = new List<SiteMapArticle>();
sma.Add(new SiteMapArticle { url = BL.Sections.VirtualPath(subsection) + "/" + article.Code + "-" + UrlEncoding.ArticleEncode(article.Headline) + ".aspx" });
Debug.WriteLine(sma[0].url);
}
}
}
上面的代码仅适用于Debug.WriteLine()的输出。 但是,当我将鼠标悬停在“ var siteMapSection”上时,它显示“ sectionUrl”,而“ subSection”为空。 这是因为我在foreach中的单独变量中添加了值。 如何修改代码以将其获取(当我将鼠标悬停在var siteMapSection上时),如下所示:
siteMapSection
[0]sectionUrl = "abc.com"
subSection
[0]subSectionUrl = "ced.com"
[0]url = "zya.com"
[1]url = "sd.com"
[2]url = "ab.in"
::::::::::::::::
[1]subSectionUrl = "abd.org"
[0]url = "yy.in"
::::::::::::::::
:::::::::::::::::::
[1]sectionUrl = "yep.com"
subSection
[0]subSectionUrl = "ced.com"
[0]url = "zya.com"
[1]url = "sd.com"
[2]url = "ab.in"
::::::::::::::::
[1]subSectionUrl = "abd.org"
[0]url = "yy.in"
::::::::::::::::
:::::::::::::::::::
:::::::::::::::::::::::::::
请帮我。 提前致谢。
在变量section
和subsection
section
初始化集合,然后将其直接添加到它们中。
var siteMapSection = new List<SiteMapSection>();
DL.SectionArticle sa = new NewsFeed.BusinessTier.DataAccessLayer.SectionArticle();
foreach (BE.Section section in BL.Sections.Find(websiteId, parentSectionId))
{
int sectionId = section.Id;
var mySection = new SiteMapSection();
mySection.sectionUrl = BL.Sections.VirtualPath(section) + ".aspx";
mySection.subSection = new List<SiteMapSubSection>();
siteMapSection.Add(mySection);// NOTICE CHANGE HERE
//Debug.WriteLine(siteMapSection[0].sectionUrl);
foreach (BE.Section subsection in BL.Sections.Find(websiteId, sectionId))
{
int subSectionId = subsection.Id;
var mySubSection = new SiteMapSubSection();
mySubSection.subSectionUrl = BL.Sections.VirtualPath(subsection) + ".aspx";
mySubSection.article = new List<SiteMapArticle>();
enter code here
mySection.subSection.Add(mySubSection);// NOTICE CHANGE HERE
//Debug.WriteLine(smss[0].subSectionUrl);
var articles = sa.GetArticlesForSection(websiteId, subSectionId, 10);
foreach (var article in articles)
{
mySubSection.article.Add(new SiteMapArticle { url = BL.Sections.VirtualPath(subsection) + "/" + article.Code + "-" + UrlEncoding.ArticleEncode(article.Headline) + ".aspx" });// NOTICE CHANGE HERE
//Debug.WriteLine(sma[0].url);
}
}
}
尝试这个:
var siteMapSection = new List<SiteMapSection>();
DL.SectionArticle sa = new NewsFeed.BusinessTier.DataAccessLayer.SectionArticle();
foreach (BE.Section section in BL.Sections.Find(websiteId, parentSectionId))
{
int sectionId = section.Id;
var siteMap=new SiteMapSection { sectionUrl = BL.Sections.VirtualPath(section) + ".aspx" };
Debug.WriteLine(siteMap.sectionUrl);
var smss = new List<SiteMapSubSection>();
foreach (BE.Section subsection in BL.Sections.Find(websiteId, sectionId))
{
int subSectionId = subsection.Id;
var sms=new SiteMapSubSection { subSectionUrl = BL.Sections.VirtualPath(subsection) + ".aspx" };
Debug.WriteLine(smss[0].subSectionUrl);
var sma = new List<SiteMapArticle>();
var articles = sa.GetArticlesForSection(websiteId, subSectionId, 10);
foreach (var article in articles)
{
var sm= new SiteMapArticle { url = BL.Sections.VirtualPath(subsection) + "/" + article.Code + "-" + UrlEncoding.ArticleEncode(article.Headline) + ".aspx" };
sma.Add(sm);
Debug.WriteLine(sm.url);
}
sms.article=sma;
smss.Add(sms);
}
siteMap.subSection=smss;
siteMapSection.Add(siteMap);
}
在构造函数中初始化subSection
public class SiteMapSection
{
public string sectionUrl { get; set; }
public List<SiteMapSubSection> subSection { get; set; }
public SiteMapSection()
{
subSection =new List<SiteMapSubSection>();
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.