【问题标题】:How to change pictures in asp.net to Combo box Selected Index Change如何将asp.net中的图片更改为组合框选定索引更改
【发布时间】:2012-08-25 14:22:58
【问题描述】:

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

【问题讨论】:

  • 你有没有想过使用 Server.MapPath("../Pic/Capture.JPG");获取图片的文件路径名?
  • 是的,先生,我试过了……但它给出了一个例外……'C:/Users/Laksh/Documents/Visual Studio 2010/WebSites/WebSite2/Pic/Capture.JPG' is a physical path, but a virtual path was expected.
  • Server.MapPath 将虚拟路径映射到物理位置 - 所以这将导致异常!!见msdn.microsoft.com/de-de/library/…

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


【解决方案1】:

不可能设置绝对路径,指的是本地磁盘上的位置!这会产生类似 ...

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

【讨论】:

  • 这应该可行,但我认为回发方法并不理想。用户体验很糟糕。考虑注册一个客户端 (JS) on-change 事件,以避免每次用户在项目之间切换时都需要回发。
  • 当然这样会更好,但由于 autoPostBack 在原始问题中,我没有更改该细节。但是请随时发布示例,以便我/我们可以了解它!提前谢谢
  • 但是这种方法也行不通..先生...它不会给出任何异常..但根本没有加载图像..
  • 我假设在您的项目中有一个 pic 文件夹,并且在该文件夹中有一个 error.jpg 图像。如果我是假的,请更新您的问题?
【解决方案2】:

我同意@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>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多