Asp.net 使用查询字符串重定向

Asp.net 使用查询字符串重定向,asp.net,vb.net,ms-access,query-string,response.redirect,Asp.net,Vb.net,Ms Access,Query String,Response.redirect,好的,我刚刚写了我自己的“向数据库添加一本书”ASP.net页面,看起来是这样的: 正如您在上面的代码中所看到的,一旦建立了到数据库的连接,我想使用查询字符串来显示刚刚添加的记录,重定向到detail.aspx(这是一个显示来自数据库的单个图书记录和相关内容的页面)。但我收到这样一个错误: 输入字符串的格式不正确。描述:一个未处理的 执行当前web请求期间发生异常。 请查看堆栈跟踪以了解有关错误和错误的更多信息 它起源于代码的地方 异常详细信息:System.FormatException:输入

好的,我刚刚写了我自己的“向数据库添加一本书”ASP.net页面,看起来是这样的:

正如您在上面的代码中所看到的,一旦建立了到数据库的连接,我想使用查询字符串来显示刚刚添加的记录,重定向到detail.aspx(这是一个显示来自数据库的单个图书记录和相关内容的页面)。但我收到这样一个错误:

输入字符串的格式不正确。描述:一个未处理的 执行当前web请求期间发生异常。 请查看堆栈跟踪以了解有关错误和错误的更多信息 它起源于代码的地方

异常详细信息:System.FormatException:输入字符串不在 格式正确

源错误:

在执行过程中生成了未处理的异常 当前web请求。关于货物来源和位置的信息 可以使用下面的异常堆栈跟踪来识别异常

堆栈跟踪:

[格式异常:输入字符串的格式不正确。]
System.Number.stringtonNumber(字符串str,NumberStyles选项, NumberBuffer&number,NumberFormatInfo信息,布尔值(十进制) +10722195 System.Number.ParseInt32(字符串s,NumberStyles样式,NumberFormatInfo)+145
System.String.System.IConvertible.ToInt32(IFormatProvider) +46 System.Convert.ChangeType(对象值、类型代码、类型代码、IFormatProvider提供程序)+297
System.Web.UI.WebControl.Parameter.GetValue(对象值,字符串 defaultValue,类型代码类型,布尔转换EmptyStringToFull,布尔 ignoreNullableTypeChanges)+126
System.Web.UI.WebControl.Parameter.GetValue(对象值,布尔值 ignoreNullableTypeChanges)+63
System.Web.UI.WebControls.Parameter.get_ParameterValue()+40
System.Web.UI.WebControl.ParameterCollection.GetValues(HttpContext 上下文,控制)+247
System.Web.UI.WebControls.SqlDataSourceView.InitializeParameters(DbCommand 命令、参数集合参数、IDictionary排除列表) +257 System.Web.UI.WebControls.SqlDataSourceView.ExecuteSelect(DataSourceSelectArguments 参数)+589
System.Web.UI.DataSourceView.Select(DataSourceSelectArguments) 参数,DataSourceViewSelectCallback)+21
System.Web.UI.WebControls.DataBoundControl.PerformSelect()+138
System.Web.UI.WebControls.BaseDataBoundControl.DataBind()+30
System.Web.UI.WebControls.GridView.DataBind()+4
System.Web.UI.WebControls.BaseDataBoundControl.EnsureDataBound()+105 System.Web.UI.WebControls.CompositeDataBoundControl.CreateChildControls() +75 System.Web.UI.Control.EnsureChildControl()+83 System.Web.UI.Control.PreRenderRecursiveInternal()+42
System.Web.UI.Control.PreRenderRecursiveInternal()+168
System.Web.UI.Control.PreRenderRecursiveInternal()+168
System.Web.UI.Control.PreRenderRecursiveInternal()+168
System.Web.UI.Control.PreRenderRecursiveInternal()+168
System.Web.UI.Page.ProcessRequestMain(布尔值 IncludeStages前同步点,布尔值IncludeStages后同步点) +974


如何实现我要做的事情?

为什么不创建一个存储过程,该存储过程的输出参数为新插入的书本的id,然后执行以下操作

If outputparam.value isnot nothing then
    Response.Redirect(String.Format("detail.aspx?ID={0}",outputparam.value)
end if
请查看此url以了解更多信息


首先,您的Response.Redirect没有指明{0}引用的内容。您需要提供该信息的第二个参数。ID是什么以及它来自哪里?ID是我数据库中“booklist”表中的一个字段(连接字符串称为bookmeetconstring),我选择了如下内容:Response.Redirect(“detail.aspx?ID=“&Request.QueryString(“ID”))。重定向可以工作,但URL中的查询字符串值为空(即“)。谢谢,最后我实现了类似的功能!
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

End Sub

Protected Sub btn_submission_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btn_submission.Click
    Dim myGUID = Guid.NewGuid()

    Dim newFileName As String = myGUID.ToString() & ".jpg"
    Dim fileLocationOnServerHardDisk = Request.MapPath("img/thumb") & "/" & newFileName
    fu_picture.SaveAs(fileLocationOnServerHardDisk)
    Dim oleDbConn As New OleDb.OleDbConnection(ConfigurationManager.ConnectionStrings("BookMeetConnString").ConnectionString)
    Dim SqlString As String = "Insert into booklist(Title,Author,PublicationDate,Pages,Publisher,imgurl,AverageRating)
Values (@f1,@f2,@f3,@f4,@f5,@f6,@f7)"
    Dim cmd As OleDbCommand = New OleDbCommand(SqlString, oleDbConn)
    cmd.CommandType = CommandType.Text
    cmd.Parameters.AddWithValue("@f1", tb_booktitle.Text)
    cmd.Parameters.AddWithValue("@f2", tb_bookauthor.Text)
    cmd.Parameters.AddWithValue("@f3", tb_bookpubyear.Text)
    cmd.Parameters.AddWithValue("@f4", tb_bookpages.Text)
    cmd.Parameters.AddWithValue("@f5", tb_publisher.Text)
    cmd.Parameters.AddWithValue("@f6", "img/thumb/" & newFileName)
    cmd.Parameters.AddWithValue("@f7", rbl_Stars.SelectedValue)
    oleDbConn.Open()
    cmd.ExecuteNonQuery()
    Response.Redirect("detail.aspx?ID={0}")

End Sub

Protected Sub rbl_Stars_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs) Handles rbl_Stars.SelectedIndexChanged

End Sub 
End Class
If outputparam.value isnot nothing then
    Response.Redirect(String.Format("detail.aspx?ID={0}",outputparam.value)
end if