asp.net C# 如何以编程方式更改 Page_Load 上的正文背景图像
Posted
技术标签:
【中文标题】asp.net C# 如何以编程方式更改 Page_Load 上的正文背景图像【英文标题】:asp.net C# how to programmatically change body background-image on Page_Load 【发布时间】:2013-12-31 12:33:40 【问题描述】:我正在尝试制作简单的网页,这里是我的 html 代码正文
<body runat="server" id="BodyTag" style="height: 1171px; width: 1148px;">
<form id="form1" runat="server">
在我的 Form.aspx.cs 文件中的 Page_Load 上,我想生成从 1 到 X 的随机数 其中 X 是特定文件夹(包含图像的文件夹)中的文件数,然后我希望主体背景图像是这个随机生成的数字,只要文件夹中的图像名称是 1,2,...,...这是我的代码
protected void Page_Load(object sender, EventArgs e)
string path = "C:/Users/FluksikartoN/documents/visual studio 2012/Projects/FLUKSIKARTON/FLUKSIKARTON/WebPhotos/BackGroundPhotos";
int countF = Directory.GetFiles(path, "*.*", SearchOption.AllDirectories).Length;
Random rand = new Random((int)DateTime.Now.Ticks);
int n = rand.Next(1, countF);
BodyTag.Style["background-image"] = "C:/Users/FluksikartoN/documents/visual studio 2012/Projects/FLUKSIKARTON/FLUKSIKARTON/WebPhotos/BackGroundPhotos/" + n.ToString() + ".jpg";
身体背景图像没有改变,它保持白色,我不明白为什么。如果您需要,请随时询问更多信息
【问题讨论】:
不要使用本地文件系统路径作为图像位置。 【参考方案1】:使用 css 可以更好地实现这一点。由于您需要一种从代码中执行此操作的方法,因此我想到的最简单的选择是使用生成的 javascript 执行此操作
Javascript
<script type="text/javascript">
document.body.style.background = "url('http://localhost:53942/images/_65209699_fanbase_bbc.jpg')";
document.body.style.backgroundRepeat = 'no-repeat';
</script>
将其应用于您的代码
protected void Page_Load(object sender, EventArgs e)
string script = "<script type=\"text/javascript\">
document.body.style.background = \"url('http://localhost:53942/images/_65209699_fanbase_bbc.jpg')";
document.body.style.backgroundRepeat = 'no-repeat';
</script>\";
ClientScript.RegisterClientScriptBlock(this.GetType(), "background-changer-script", script);
这只会将 Javascript 溢出到页面底部,并由浏览器执行,并按预期更改背景。检查 Javascript 和 CSS 的智能感知,了解其他可以设置的背景属性
【讨论】:
【参考方案2】:您可能需要使用网络相对 URL:
BodyTag.Style["background-image"] = "http://localhost/FLUKSIKARTON/WebPhotos/BackGroundPhotos/" + n.ToString() + ".jpg";
另一种方法是为每个图像提供 1 个 CSS 类,然后切换正在使用的类:
CSS
.image1
background-image: url('/FLUKSIKARTON/WebPhotos/BackGroundPhotos/1.jpeg');
C#
BodyTag.CssClass = string.Format("image0.jpeg", n);
【讨论】:
BodyTag.Style["background-image"] = "localhost/FLUKSIKARTON/WebPhotos/BackGroundPhotos" + n.ToString() + ".jpg";还是不行 检查您呈现给浏览器的 URL 是否正确 - 将其复制并粘贴到您的浏览器 URL 栏中并检查图像是否显示 好吧,当我复制图像路径并将其放在我的浏览器中时,会出现以下内容:file:///C:/Users/FluksikartoN/Documents/Visual%20Studio%202012/Projects/FLUKSIKARTON/ FLUKSIKARTON/WebPhotos/BackGroundPhotos/1.jpg 您需要向浏览器呈现一个可访问网络的 URL;这不是网络可访问的 试试这个:BodyTag.Style["background-image"] = "/WebPhotos/BackGroundPhotos/" + n.ToString() + ".jpg";以上是关于asp.net C# 如何以编程方式更改 Page_Load 上的正文背景图像的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 ASP.NET Core 同时制作 Razor Page 和 C# 代码框架?
如何以编程方式登录到 ASP.NET Identity 2?