我正在批量处理一些对象,并为它们生成一些标记,以便在旋转木马中使用。
当我在批处理中的最后一项时,我想给该项目一个类,以便我可以相应地设置它。
我能够给项目一个内联样式来获得它我想要的,但是,如果我尝试向元素添加一个类(已经给出了一个类),它不会在标记中显示。很奇怪 - 你不能为一个元素分配多个类,它不会将类附加到现有的类吗?
以下是我正在使用的代码,希望有人可以提供建议:
public static string CreateCarouselMarkup(BrandCollection carouselBrands)
{
StringWriter stringWriter = new StringWriter();
using (HtmlTextWriter textWriter = new HtmlTextWriter(stringWriter))
{
//List items
textWriter.RenderBeginTag(HtmlTextWriterTag.Li);
int idx = 0;
foreach (Brand brand in carouselBrands)
{
idx++;
textWriter.AddAttribute(HtmlTextWriterAttribute.Href, string.Format("/brands/{0}/", brand.SeoInfo.SeoUrl));
textWriter.RenderBeginTag(HtmlTextWriterTag.A);
textWriter.AddAttribute(HtmlTextWriterAttribute.Class, "carousel-image");
textWriter.AddAttribute(HtmlTextWriterAttribute.Src, brand.Logo);
textWriter.AddAttribute(HtmlTextWriterAttribute.Alt, brand.Title);
//If we are on the last item or last item for this batch
if (idx == carouselBrands.Count())
{
textWriter.AddAttribute(HtmlTextWriterAttribute.Class, "last-img");
}
textWriter.RenderBeginTag(HtmlTextWriterTag.Img);
textWriter.RenderEndTag();//End Img tag
textWriter.RenderEndTag();//End A tag
}
textWriter.RenderEndTag();//End Li tag
}
return stringWriter.ToString();
}
以下是呈现标记的一小部分示例:
<ul class="bjqs" style="height: 80px; width: 100%; display: block;">
<li class="bjqs-slide" style="height: 80px; width: 100%; display: list-item;">
<a href="/brands/kaldewei/">
<img class="carousel-image" src="/Images/Brands/Logos/kaldewei_logo_02.png" alt="Kaldewei">
</a>
<a href="/brands/iotti/">
<img class="carousel-image" src="/Images/Brands/Logos/Iotti-logo.jpg" alt="Iotti">
</a>
<a href="/brands/ellis/">
<img class="carousel-image" src="/Images/Brands/Logos/Ellis-logo.jpg" alt="Ellis">
</a>
<a href="/brands/burgbad/">
<img class="carousel-image" src="/Images/Brands/Logos/Burgbad-logo.png" alt="Burgbad">
</a>
</li>
<li class="bjqs-slide" style="height: 80px; width: 100%; display: none;">
<a href="/brands/pura/">
<img class="carousel-image" src="/Images/Brands/Logos/Pura-logo.png" alt="Pura">
</a>
</li>
</ul>
我希望将类last-img
应用于每个批处理中的最后一个图像(我不想为此使用CSS3属性)。在上面的示例中,它将应用于burgbad
和pura
。
答案 0 :(得分:3)
嗯,运行代码时我感兴趣的是它呈现class
属性两次:
<ul>
<li>
<a href="/brands/uno/"><img class="carousel-image" src="uno" alt="uno" /></a>
<a href="/brands/dos/"><img class="carousel-image" src="dos" alt="dos" /></a>
<a href="/brands/tres/"><img class="carousel-image" src="tres" alt="tres" class="last-img" /></a>
</li>
</ul>
在任何情况下,它都是添加属性,尽管渲染的标记是“关闭”。所以:
textWriter.AddAttribute(HtmlTextWriterAttribute.Class, idx == carouselBrands.Count() ? "carousel-image last-img" : "carousel-image");
呈现:
<ul>
<li>
<a href="/brands/uno/"><img class="carousel-image" src="uno" alt="uno" /></a>
<a href="/brands/dos/"><img class="carousel-image" src="dos" alt="dos" /></a>
<a href="/brands/tres/"><img class="carousel-image last-img" src="tres" alt="tres" /></a>
</li>
</ul>
H个....