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