Asp.net,响应。重定向不工作。为什么?

Asp.net,响应。重定向不工作。为什么?,asp.net,Asp.net,在我的应用程序中,在将记录插入数据源后,我试图重定向到另一个页面。插入部分工作正常,但页面从不重定向。有什么想法吗?以下是我当前的代码: ASPX <asp:FormView ID="FormView1" runat="server" DataKeyNames="RecapID" DataSourceID="RecapDataSource" DefaultMode="Insert"> <InsertItemTemplate>

在我的应用程序中,在将记录插入数据源后,我试图重定向到另一个页面。插入部分工作正常,但页面从不重定向。有什么想法吗?以下是我当前的代码:

ASPX

   <asp:FormView ID="FormView1" runat="server" DataKeyNames="RecapID" 
    DataSourceID="RecapDataSource" DefaultMode="Insert">
        <InsertItemTemplate>
            Recap Date:
            <asp:TextBox ID="RecapDateTextBox" runat="server" 
                Text='<%# Bind("RecapDate") %>' Width="80px" /><asp:RequiredFieldValidator runat="server" id="RequiredFieldValidator1" ControlToValidate="RecapDateTextBox" ErrorMessage="*" display="Dynamic" />
            <asp:Button ID="InsertButton" runat="server" CausesValidation="True" 
                CommandName="Insert" Text="Create"/>
        </InsertItemTemplate>
        </asp:FormView>
<asp:SqlDataSource ID="RecapDataSource" runat="server" 
    ConflictDetection="CompareAllValues" 
    ConnectionString="<%$ ConnectionStrings:ConnectionString %>"  
    InsertCommand="INSERT INTO [ftsrms_Recap] ([RecapDate]) VALUES (@RecapDate) SELECT @NewRecapID = SCOPE_IDENTITY()" 
    OldValuesParameterFormatString="original_{0}">
    <InsertParameters>
        <asp:Parameter DbType="Date" Name="RecapDate" />
        <asp:Parameter Direction="Output" Name="NewRecapID" Type="Int32" />
    </InsertParameters>
</asp:SqlDataSource>

您需要添加事件处理程序以重新获取数据源:

oninserted=“RecapDataSource\u Inserted”

因此,您的aspx代码变成:

 <asp:FormView ID="FormView1" runat="server" DataKeyNames="RecapID" 
    DataSourceID="RecapDataSource" DefaultMode="Insert">
        <InsertItemTemplate>
            Recap Date:
            <asp:TextBox ID="RecapDateTextBox" runat="server" 
                Text='<%# Bind("RecapDate") %>' Width="80px" /><asp:RequiredFieldValidator runat="server" id="RequiredFieldValidator1" ControlToValidate="RecapDateTextBox" ErrorMessage="*" display="Dynamic" />
            <asp:Button ID="InsertButton" runat="server" CausesValidation="True" 
                CommandName="Insert" Text="Create"/>
        </InsertItemTemplate>
        </asp:FormView>
<asp:SqlDataSource ID="RecapDataSource" runat="server"
    oninserted="RecapDataSource_Inserted"
    ConflictDetection="CompareAllValues" 
    ConnectionString="<%$ ConnectionStrings:ConnectionString %>"  
    InsertCommand="INSERT INTO [ftsrms_Recap] ([RecapDate]) VALUES (@RecapDate) SELECT @NewRecapID = SCOPE_IDENTITY()" 
    OldValuesParameterFormatString="original_{0}">
    <InsertParameters>
        <asp:Parameter DbType="Date" Name="RecapDate" />
        <asp:Parameter Direction="Output" Name="NewRecapID" Type="Int32" />
    </InsertParameters>
</asp:SqlDataSource>
为此:

Protected Sub RecapDataSource_Inserted(sender As Object, e As System.Web.UI.WebControls.SqlDataSourceStatusEventArgs)

    'Read the value of the @NewProductID OUTPUT parameter
    Dim newRecapID As Integer = Convert.ToInt32(e.Command.Parameters("@NewRecapID").Value)

    Response.Redirect("Profile.aspx?")

End Sub
如果仍不起作用,请删除此行(或注释),然后重试:

Dim newRecapID As Integer = Convert.ToInt32(e.Command.Parameters("@NewRecapID").Value)

可能是异常。

您确定RecapDataSource\u Inserted处理插入的事件吗?您可以在该行上放置一个断点,看看它是否真的被命中。如果不是,问题在别处。尝试了您的建议Vano,但调试器引发了以下错误:错误1方法“受保护的Sub-RecapDataSource_Inserted(发件人作为对象,e作为System.Web.UI.WebControl.SqlDataSourcesSelectingEventArgs)”“没有与委托兼容的签名”委托Sub-SqlDataSourcestatuseEventHandler(发送者作为对象,e作为System.Web.UI.WebControl.SqlDataSourceStatusEventArgs)”。上述操作都不起作用,甚至对以下行进行了注释:Dim newRecapID As Integer=Convert.ToInt32(e.Command.Parameters(@newRecapID”).Value)。如果不使用上述命令,我将重新保存并重新编译,并使用oninserted=“RecapDataSource\u Inserted”在ASPX中,使用System.Web.UI.WebControl.SqlDataSourcesSelectingEventArgs隐藏的代码,它成功了。非常感谢!
Protected Sub RecapDataSource_Inserted(sender As Object, e As System.Web.UI.WebControls.SqlDataSourceStatusEventArgs)

    'Read the value of the @NewProductID OUTPUT parameter
    Dim newRecapID As Integer = Convert.ToInt32(e.Command.Parameters("@NewRecapID").Value)

    Response.Redirect("Profile.aspx?")

End Sub
Dim newRecapID As Integer = Convert.ToInt32(e.Command.Parameters("@NewRecapID").Value)