0

我只想根据 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";
    }
}
4

2 回答 2

2

无法设置绝对路径,指的是本地磁盘上的位置!这会产生类似...的代码

<!-- 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 将为您的图像添加一个完美的工作路径!

于 2012-08-25T14:57:37.627 回答
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>
于 2012-08-25T18:08:36.190 回答