我有一个类别 - 我正在将它用于我的电子商务系统的模型,我为每个类别添加了固定的背景图像,我想要实现的是以编程方式为添加的每个类别添加不同的背景图像。下面是代码,目前我通过css添加图像。
@using Nop.Web.Models.Catalog;
@if (Model.Count > 0)
{
<div class="home-page-category-grid">
@(Html.DataList<CategoryModel>(Model, 5,
@<div class="item-box">
<div class="category-item"> @*Thats where i am adding background-images in the class category-item*@
<h2 class="title">
<a href="@Url.RouteUrl("Category", new { categoryId = item.Id, SeName = item.SeName })" title="@item.PictureModel.Title">
@item.Name</a>
</h2>
<div class="picture">
<a href="@Url.RouteUrl("Category", new { categoryId = item.Id, SeName = item.SeName })" title="@item.PictureModel.Title">
<img style="border-width: 0px;" alt="@item.PictureModel.AlternateText" src="@item.PictureModel.ImageUrl"
title="@item.PictureModel.Title" /></a>
</div>
</div>
</div>
))
</div>
<div class="home-page-category-grid-separator"></div>
}
Css for Category -Item
.home-page-category-grid .category-item
{
text-align: center;
margin: 10px 0px 35px 4px; /*width: 150px;*/
width: 166px;
height: 185px;
background: url('images/picture-bg.png') no-repeat 0 100%;
}
任何建议或替代方案都将受到高度赞赏,我只需要为每个类别项目添加不同的背景图像,目前背景图像已固定在datalist使用的category-item类中。
答案 0 :(得分:3)
如果您在视图中有样式表定义,而不是在css文件中,则可以执行此操作。 Css文件基本上是静态文件,如html。如果你想获得一些动态的东西,你必须在服务器端代码中执行它。也许混淆我所说的..但检查我的样本,你明白我的意思....我希望;)
// Your View
<style>
body
{
background-image: url('@ViewBag.ImagePath');
}
</style>
// your action method
public ActionResult ActionName()
{
ViewBag.ImagePath = "<path to your image">
return View();
}
答案 1 :(得分:0)
我会使用多个CSS类,一个用于一般背景图像样式,然后是每个类别的一个,只有具有正确图像参考的特定背景图像样式。
类似的东西:
@using Nop.Web.Models.Catalog;
@if (Model.Count > 0)
{
<div class="home-page-category-grid">
@(Html.DataList<CategoryModel>(Model, 5,
@<div class="item-box">
<div class="category-item category-@item.Id"> @*Thats where i am adding background-images in the class category-item*@
<h2 class="title">
<a href="@Url.RouteUrl("Category", new { categoryId = item.Id, SeName = item.SeName })" title="@item.PictureModel.Title">
@item.Name</a>
</h2>
<div class="picture">
<a href="@Url.RouteUrl("Category", new { categoryId = item.Id, SeName = item.SeName })" title="@item.PictureModel.Title">
<img style="border-width: 0px;" alt="@item.PictureModel.AlternateText" src="@item.PictureModel.ImageUrl"
title="@item.PictureModel.Title" /></a>
</div>
</div>
</div>
))
</div>
<div class="home-page-category-grid-separator"></div>
看看我如何将category-@item.Id
添加到同一个类声明中?如果你有一个类别名称,你也可以使用更像语义的东西,等等。然后你可以在CSS中这样做:
.home-page-category-grid .category-item
{
text-align: center;
margin: 10px 0px 35px 4px; /*width: 150px;*/
width: 166px;
height: 185px;
}
.home-page-category-grid .category-item .category-1
{
background: url('images/picture-bg-1.png') no-repeat 0 100%;
}
.home-page-category-grid .category-item .category-2
{
background: url('images/picture-bg-2.png') no-repeat 0 100%;
}
还有其他一些替代方案,特别是如果你在循环执行之前不知道图像网址...在这种情况下我只会使用style
属性,其值为{{1} }。
答案 2 :(得分:0)
使用samandmoore的答案,您也可以在视图中完全执行此操作,使用基于请求的URL的图像源(使用@Request.RawUrl):
<div class="parallax bg-image-@Request.RawUrl.Replace('/', '-')" >
<section class="page-title">
<div class="container">
<h2>@Html.Raw(ViewBag.Title)</h2>
</div>
</section>
</div>