1

“滑块 div 中只允许包含包含在链接中的图像或图像。任何其他 HTML 都会破坏滑块。”

在 C# 中以编程方式从数据库中插入图像的最佳方法是什么?我在 div id="slider" 标签内使用了标签,但后来意识到标签会在 span 标签内创建图像,因此会破坏滑块。

lblSlider.Text += "<img src=\"" + URL + "\" alt=\"" + address + "\" title=\"<a href='Featured/" + address" + address + ", " + city + "</a>\" />";
4

3 回答 3

0

使用这样的标记...

<img src='ImageHandler.ashx?ProductID=<%# Eval("ProductID")%>' 
    alt="<%# Eval("ProductName") %>" title="<%# Eval("ProductName") %>" />

...结合这样的图像 HttpHandler 类(适应您自己的特定数据库模式):

public class ImageHandler : IHttpHandler
{
    public void ProcessRequest(HttpContext context)
    {
        if (context.Request.QueryString["productID"] != null)
        {
            try
            {
                string ProductID = context.Request.QueryString["ProductID"];
                if (Convert.ToInt32(ProductID) > 0)
                {
                    const string CONN 
                        = "Initial Catalog=xxx;Data Source=xxx;Integrated Security=SSPI;";

                    string selectQuery 
                        = "SELECT Photo FROM dbo.Products WHERE dbo.Products.ProductID=" 
                            + ProductID.ToString();
                    SqlConnection conn = new SqlConnection(CONN);
                    SqlCommand cmd = new SqlCommand(selectQuery, conn);

                    conn.Open();
                    SqlDataReader dr = cmd.ExecuteReader();

                    dr.Read();
                    context.Response.BinaryWrite((Byte[])dr[0]);
                    dr.Close();
                    conn.Dispose();
                    // context.Response.End(); 
                    // caused an "Abort thread" error 
                    // - this is correct and is a special exception
                }
            }
            catch (Exception ex)
            {
                ErrorReporting.LogError(ex);   
            }
        }
        else
            throw new ArgumentException("No ProductID parameter specified");
    }

    public bool IsReusable
    {
        get
        {
            return true; // multiple images otherwise false
        }
    }
}
于 2011-08-23T01:02:37.390 回答
0

好的,我还没有尝试过其他解决方案,但我这样做了并且它有效:这里有一些全局 c# 变量:

protected int count;
protected string[] arr = new string[20];

然后我在 Page_Load 方法中为我的数据库中的字符串数组赋值。

然后我只是在我的页面上用 javascript 编写 nivo 滑块:

    <script type="text/javascript">
        document.write("<div id='slider' class='nivoSlider'>");
        var count = <%= count %>; 
        var myArray = <% = new JavaScriptSerializer().Serialize(arr) %>;
        for(var i = 0; i < count; i++) {
            document.write(myArray[i]);
        }

        document.write("</div>");
    </script>

这个解决方案对我来说似乎更容易,但如果有人认为我应该使用其他解决方案而不是这个解决方案,请告诉我。哦,别忘了命名空间 System.Web.Script.Serialization

于 2011-08-23T19:47:59.533 回答
0

我有同样的要求,并尝试了下面的代码来完成基于类别的图像的动态加载。这些图像从我的数据库中加载。我是 ASP.Net 的新手,如果我做错了什么或犯了什么错误,请告诉我:)。

在 ASP.Net 文件中:我正在使用 nivo 滑块附加方法

    <script type="text/javascript">
    $(window).load(function() {

        $('#slider').append('<img id="ad5" src=<%=__ad1ImageUrl %> />');
        $('#slider').append('<img id="ad6" src=<%=__ad2ImageUrl %> />');
        $('#slider').append('<img id="ad7" src=<%=__ad3ImageUrl %> />');
        $('#slider').append('<img id="ad8" src=<%=__ad4ImageUrl %> />');
        $('#slider').nivoSlider();
    });
</script>

我的表如下所示:

    <table style="height: 183px; width: 100%" cellpadding="0" cellspacing="0" border="0">
    <tr>
        <td align="left">
            <div id="wrapper">
                <div class="slider-wrapper theme-default">
                    <div class="ribbon">
                    </div>
                    <div id="slider" class="nivoSlider">
<!-- note that no images added here -->
                    </div>
                </div>
            </div>
        </td>
    </tr>
</table>

在后面的代码中:使用变量来存储图像 url(s)。您现在可以从 DB 获取 URL 并进行填充。在我的代码中,我使用了这些变量(也可以使用数组)来捕获 url 路径。您可以从任何来源获取路径,如数据库、Xml 或...

public string __ad1ImageUrl = "";
public string __ad2ImageUrl = "";
public string __ad3ImageUrl = "";
public string __ad4ImageUrl = "";

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        __ad1ImageUrl = "UserControls/Images/mainBanner1.jpg";
        __ad2ImageUrl = "UserControls/Images/mainBanner2.jpg";
        __ad3ImageUrl = "UserControls/Images/mainBanner3.jpg";
        __ad4ImageUrl = "UserControls/Images/mainBanner4.jpg";
    }
}
于 2012-01-29T16:52:34.060 回答