Response.Redirect跳转失效问题求助
解决回发验证错误的方案
首先先修正你代码里的一个小拼写错误:EventeArgs应该改成EventArgs,这个会导致编译问题,先处理掉。
接下来看你遇到的“Invalid postback or callback argument”错误,这个通常是ASP.NET的事件验证机制在起作用——它会检查回发时的控件值是否是服务器端之前生成的合法值,不匹配就会抛出这个错误。结合你的情况,我给你几个针对性的解决办法:
方法一:确保下拉框选项仅在首次加载时生成(推荐)
如果你的myselect下拉框是动态绑定/添加选项的,一定要把绑定逻辑放在!IsPostBack判断里,这样回发时不会重新生成选项,视图状态里的选项和用户选择的就能对应上:
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { // 这里写你绑定myselect的代码,比如从数据源加载选项 // 示例: // myselect.DataSource = yourDataSource; // myselect.DataTextField = "TextColumn"; // myselect.DataValueField = "ValueColumn"; // myselect.DataBind(); } }
方法二:关闭事件验证(谨慎使用)
如果你的场景确实需要在回发时动态修改下拉框选项,或者暂时不想处理视图状态的问题,可以在页面的Page指令里关闭事件验证。不过要注意,这个操作会降低页面的安全性,可能被恶意利用,所以优先用方法一。
在你的.aspx页面顶部的Page标签里添加EnableEventValidation="false":
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="YourPage.aspx.cs" Inherits="YourNamespace.YourPage" EnableEventValidation="false" %>
补充检查
再确认一下你的Response.Redirect参数:myselect.SelectedValue.ToString()是否是一个合法的URL(比如相对路径或者完整URL),虽然断点看到有值,但如果值格式不对也可能有问题,但当前的错误提示还是指向回发验证,所以先优先处理上面的方法。
内容的提问来源于stack exchange,提问作者jorgehvieirasilva
相关产品推荐
相关产品推荐

