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# 代码框架?

如何以编程方式更改 C# 中的程序集名称

如何以编程方式登录到 ASP.NET Identity 2?

asp.net 成员资格 - 如何以编程方式确定用户是不是在角色中

如何通过 c# 以编程方式更改 COM 安全设置?

以编程方式向 C# 中的文件添加安全权限