【问题标题】:I can't seem to get css or programmatically changing imagebuttons image我似乎无法获得 css 或以编程方式更改 imagebuttons 图像
【发布时间】:2013-09-23 02:39:21
【问题描述】:

这是一个两部分的问题,一个是 CSS,另一个是代码隐藏。 这是我的按钮导航代码...

        <asp:ImageButton ID="ImageButton1" runat="server" ImageUrl="~/Buttons/upviewassets.png"     OnClick="ImageButton1_Click" />
    <asp:ImageButton ID="ImageButton2" runat="server" ImageUrl="~/Buttons/upaddassets.png"     OnClick="ImageButton2_Click" />            

所有按钮都是并排的。在 OnClick() 事件中,我的代码是这样的......

protected void ImageButton1_Click(object sender, ImageClickEventArgs e)
    {
        ImageButton1.ImageUrl = "Buttons/dnviewassets.png";
        ImageButton2.ImageUrl = "Buttons/upaddassets.png";
        //Response.Redirect("~/WebForm1.aspx");
    }

    protected void ImageButton2_Click(object sender, ImageClickEventArgs e)
    {

        ImageButton1.ImageUrl = "Buttons/upviewassets.png";
        ImageButton2.ImageUrl = "Buttons/dnaddassets.png";
        //Response.Redirect("~/WebForm1.aspx");        
    }

当我注释掉 response.redirect 时,它可以工作,但我需要能够使用 response.redirect,因为这是在母版页中,当我使用响应运行它时,我需要这些按钮重定向到其他页面.redirect 方法图像不会改变。同样,当我第一次在没有 response.redirect 的情况下运行它时,当我单击按钮时,它会快速跳转并返回到它应该在的位置,但之后每次都可以正常工作。

所以对于第二部分,我也尝试使用 css 更改 imagebuttons 图像但无法使其工作,我已经在线搜索并浏览了教程,但即使使用提供的代码它也不起作用正确,我的按钮一直在跳。 我正在尝试模仿母版页中选项卡的外观。

谢谢

【问题讨论】:

    标签: asp.net css


    【解决方案1】:

    我会在点击事件的会话中保存一个标志,并在重定向页面 PreRender 中检索它:

    protected override void OnPreRender(EventArgs e)
    {
        if (!IsPostBack)
        {
            PaintButtons();
        }
        base.OnPreRender(e);
    }
    

    还有我的 PaintButtons 方法:

    private void PaintButtons()
    {
        if(Session["ImageButton_Toggled"] == null )
        {               
            ImageButton1.ImageUrl = "Buttons/upviewassets.png";
            ImageButton2.ImageUrl = "Buttons/upaddassets.png";
        }
        else
        {
            int toggleId = 1;
            int.TryParse(Session["ImageButton_Toggled"].ToString(), out toggleId);
    
            if (toggleId == 1)
            {
                ImageButton1.ImageUrl = "Buttons/dnviewassets.png";
                ImageButton2.ImageUrl = "Buttons/upaddassets.png";
            }
            else
            {
                ImageButton1.ImageUrl = "Buttons/upviewassets.png";
                ImageButton2.ImageUrl = "Buttons/dnaddassets.png";
            }
        }
    }
    

    我的母版页中的单击事件方法:

    protected void ImageButton1_Click(object sender, ImageClickEventArgs e)
    {
        Session["ImageButton_Toggled"] = 1;
        Response.Redirect("~/WebForm1.aspx");
    }
    
    protected void ImageButton2_Click(object sender, ImageClickEventArgs e)
    {
        Session["ImageButton_Toggled"] = 2;
        Response.Redirect("~/WebForm1.aspx");        
    }
    

    现在我可以重定向到我想要的任何页面,并且我的母版页将按预期工作。

    【讨论】:

    • 谢谢,我也要试试这个。看起来如此简单的事情似乎需要做很多工作
    • 我试过你的答案,另一个答案基本相同。但是,当它第一次加载并单击其中一个按钮时,它们似乎会跳出并返回,这是什么原因?,我需要像使用 ajax 选项卡容器时那样的流畅过渡
    • 我将代码从页面加载移动到预渲染以停止闪烁。
    • 这可能是我的浏览器,因为我没有得到和你一样的效果。它仍然看起来像按钮的页面加载,它仅在第一次单击两个按钮时才会这样做,然后它甚至会自动退出并且不会进行页面加载外观
    猜你喜欢
    • 2011-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    相关资源
    最近更新 更多