我想允许用户从我的网站上下载将成为他们背景的SQL图片。
我已经将上传的图片用作各个地方的前景对象,所以我知道存储和检索工作正常,我通常会DataBind()
到asp:FormView
,但现在我正在尝试将此图片用作<body>
中的背景,但<body>
需要一个网址字符串。
这就是我所拥有的。我正忙着这个,但找不到答案。
<body style="background-image:url(<%# GetBodyStyle() %>">
代码隐藏:
public object GetBodyStyle()
{
object bodyBackgroundImageUrl = BodyBackgroundImageUrl;
//Make adjustments
return bodyBackgroundImageUrl;
}
我有另一个子程序从DB中获取我的图像,名为FetchImage,它返回一个数据表:
protected object BodyBackgroundImageUrl
{
get
{
DataCalls DataCall = new DataCalls();
return DataCall.FetchImage("MyBackgroundImageID");
}
答案 0 :(得分:0)
我建议创建一个图像处理程序:
您可以像标准的“ashx”文件一样创建它
<%@ WebHandler Language="C#" Class="getImage" %>
using System;
using System.Web;
public class BackGroundImageHandler : IHttpHandler {
public void ProcessRequest (HttpContext context) {
//return content from dabase and render image
// probably using context.Response.BinaryWrite
}
public bool IsReusable {
get {
return false;
}
}
}
如果你想拥有自己的扩展,你可以生成一个dll并在web.config中配置它,如:
<configuration>
<system.web>
...
<httpHandlers>
<add verb="*" path="backimage.img" type="Sample.BackGroundImageHandler, Sample" />
</httpHandlers>
使用问题和ASHX解决方案中的代码:
<body style="background-image:url(BackGroundImage.ashx)">
请记住,您可以配置处理程序以访问会话,并查询字符串变量,如:
<body style="background-image:url(BackGroundImage.ashx?id=something)">
您可以在此处找到更多信息:
答案 1 :(得分:0)
我设法在一些读者的帮助下,并在this page的帮助下解决了这个问题。
真正的问题是我无法访问数据库并使用它在<body>
标记中返回的变量。我已经在其他地方使用了图像处理程序,但这不适用于<body>
标记。所以这就是我所做的:
我写了一个存储过程来获取图像的ID。
然后我将<body>
标记更改为:
<body id="MasterPageBodyTag" runat="server">
在代码隐藏(C#)中我添加了这个:
public HtmlGenericControl BodyTag
{
get
{
return MasterPageBodyTag;
}
set
{
MasterPageBodyTag = value;
}
}
在Page_Load事件中,我把它放在:
BackgroundImageID = DataCall.FetchImageIDByName(MySchoolName, "MasterBackground");
BodyTag.Attributes.Add("style", "background-image:" + "url(Handler.ashx?puid=" + BackgroundImageID.ToString() + ");");
注意:FetchImageIDByName返回存储过程中的ID。 有一个名为Handler.ashx的图像处理程序。
现在它有效。我要感谢所有给我一些宝贵时间的人。它永远不够。祝你好运。
答案 2 :(得分:-1)
Try below link you might get your answer