ASP:Net LinkBut​​ton控制回发问题

时间:2012-05-28 10:58:15

标签: asp.net asp.net-controls

我的 profile.aspx 页面中有一个asp.net linkBut​​ton(或imageButton)控件。我在后面的代码中检查下面页面中的Request.Querystring(“id”)。

  

http://localhost:42932/profile.aspx?id=1

当我第一次加载个人资料页面时,它不会回发。没关系!。当我转到另一个用户配置文件时(同一页面只是查询字符串不同)使用带有adddress的imageButton控件;

  

http://localhost:42932/profile.aspx?id=2

它被贴回来了。我不希望它被贴回来。但是,如果我使用常规的html输入元素(如

)转到此页面
  

a href =“http://localhost:42932/profile.aspx?id=2”

它没有回发。所以我希望图像按钮的行为类似于html输入元素。

这是我的imageButton;

ASPX:

<asp:ImageButton ID="imgProfile" ImageUrl="images/site/profile1.png" runat="server"/>

.CS

imgProfile.PostBackUrl = "profile.aspx?id=" + Session["userID"];

编辑:

 if (!IsPostBack)
    {
        Session["order"] = 0;
    }

此控件位于页面加载中。所以它应该是!我用上面提到的状态回发。因为Session [“order”] = 0

时所有其他功能都正常工作

2 个答案:

答案 0 :(得分:0)

使用OnCLientClick代替OnClick,以便您只运行客户端代码。然后,sepcify你return false;

<asp:ImageButton ID="imgProfile" ImageUrl="images/site/profile1.png" runat="server" OnClientClick="return false;" />

但是,为什么要使用服务器控件,这可以使用普通的<img .. html控件来完成?

答案 1 :(得分:0)

我建议在按钮点击事件处理程序中使用PostBackUrl,而不是指定Response.Redirect()

public void imgProfile_Click(object sender, eventArgs e){
   Response.Redirect("profile.aspx?id=" + Session["userID"]);
}

或者,只需使用Hyperlink控件并在NavigateUrl期间设置Page_Load属性:

<asp:HyperLink ID="imgProfile" runat="server"><img src="images/site/profile1.png" /></asp:Hyperlink>

imgProfile.NavigateUrl = "profile.aspx?id=" + Session["userID"];