如何将asp.net中的图片更改为组合框选择的索引更改

时间:2012-08-25 14:22:58

标签: asp.net drop-down-menu combobox web selectedindexchanged

我只想根据asp.net网站上ComboBox中选择的索引更改我的面板背景图像。但图像没有加载。这是我在.aspx页面中的代码

<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="true" 
    onselectedindexchanged="DropDownList1_SelectedIndexChanged">
    <asp:ListItem>1</asp:ListItem>
    <asp:ListItem>2</asp:ListItem>
    <asp:ListItem>3</asp:ListItem>
</asp:DropDownList>

<div id="divx" style="height: 250px">
    <asp:Panel ID="Panel1" runat="server" Height="242px">
    </asp:Panel>
</div>

这就是背后的代码..

protected void Page_Load(object sender, EventArgs e)
{   }
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
    if (DropDownList1.SelectedIndex == 1)
    {
        Panel1.BackImageUrl="C:\\Users\\Laksh\\Documents\\Visual Studio 2010\\WebSites\\WebSite2\\Pic\\Capture.JPG";
    }
    else if (DropDownList1.SelectedIndex == 2)
    {
        Panel1.BackImageUrl="C:\\Users\\Laksh\\Documents\\Visual Studio 2010\\WebSites\\WebSite2\\Pic\\erroe.JPG";
    }
}

2 个答案:

答案 0 :(得分:2)

无法设置aboslute路径,指的是本地磁盘上的位置!这导致代码如...

<!-- This imageURL won't work!! -->
<div id="Panel1" style="height:250px;background-image:url(c:%09emp%0demo.jpg);">       
</div>

改为使用相对路径

protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
    Panel1.BackImageUrl = "~/pic/error.jpg";
}

如果您不确定该怎么做,您始终可以使用aspx页面的设计视图将backgroundImage分配给面板。只需选择面板,转到属性,单击属性 BackImageUrl ,然后在项目中选择图像。 VS将为您的图像添加完美的工作路径!

答案 1 :(得分:0)

我同意@Pilgerstorfer Franz,使用相对路径即〜/ xyz ...并执行server.mappath。通常,Web服务器没有权限到服务器目录层之外的本地机器,因此直接映射不是一个好主意。

您也可以尝试使用jQuery进行更改,您可以尝试类似下面的内容。你需要让它从你的ddl中提取你的值,但是你可以将它传递给你的函数,或者让它引用ddl的值字段...

<html>
    <head>
        <script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.2.min.js" ></script>
        <script>
            function doIt()
            {   
                $('#divTryMe').css('background-image','url("test.jpg")');
            }
        </script>
    </head>
    <body>
        <div id="divTryMe" onclick="doIt()">stuff</div>
    </body>
</html>