我在页面上有一个超链接,可以发送某些变量,例如Default.aspx的VAR1 = X&安培; VAR2 = Y
然后我动态创建一个ImageButton。我的ImageButton有自己的事件。 似乎ImageButton继承了从超链接发送的值。如果我右键单击图像按钮并通过浏览器查看属性,它指向以下以及Default.aspx?var1 = x& var2 = y,然后我尝试关闭视图状态,这不起作用。
我还尝试指定PostBackUrl,以便不发送url变量。但那时它的事件不会触发。
有没有办法不h
答案 0 :(得分:1)
这是ASP.NET的默认行为。由于ImageButton
只会导致事件处理程序的执行,因此附加到它的超链接将是同一页面。
为什么这是一个问题?
答案 1 :(得分:1)
ASP.NET中表单的回发URL始终与最初使用表单加载的URL相同。因此,如果从带有查询字符串的超链接加载页面,然后在该页面上使用回发控件(如ImageButton),它将始终回发到最初加载的相同URL,包括查询字符串。
有多种方法可以更改依赖于您正在使用的ASP.NET版本的回发URL,但如果2.0或更低版本则必须是javascript。专门搜索此问题(更改asp.net中的回发网址或表单操作)以查找问题的答案。
其他不太优雅的解决方案包括在使用查询字符串进行初始加载后将页面重定向到自身而没有查询字符串。
你也可以忽略回发上的查询字符串,这几乎总是所需的行为,所以在很大程度上这是一个美容问题。例如。在你的代码中只做...
if (!Page.IsPostback) {
// check for querystring data and do stuff if there, otherwise ignore it
}