检查并从当前页面的asp.net的url获取参数

时间:2012-04-16 15:35:20

标签: asp.net .net httpwebrequest

我试图从请求页面的查询字符串中获取参数“id”,如此

If Request.QueryString IsNot Nothing AndAlso _
            Request.QueryString.GetKey("id") IsNot Nothing Then
            DeleteVehicle(Request.QueryString.GetKey("id"))
 End If

但我收到此错误

System.NullReferenceException: Object reference not set to an instance of an object.

Source Error: 

Line 16:         If Request.QueryString IsNot Nothing AndAlso _
Line 17:             Request.QueryString.GetKey("id") IsNot Nothing Then

Source File: G:\projects_backup\Toaab\Toaa\admin\vehicle\view.aspx.vb    Line: 16 

请你帮帮我

修改

我在page_load事件中调用它

通过超链接

调用同一页面(具有自动生成的链接)

我也将代码更改为

If Request.QueryString("id") IsNot Nothing OrElse Request.QueryString("id") IsNot String.Empty Then
 DeleteVehicle(Request.QueryString("id").ToString)
End If

3 个答案:

答案 0 :(得分:4)

要查看QueryString中是否存在值,请检查该值是否等于空字符串而不是null:

请改为尝试:

If String.IsNullOrEmpty(Request.QueryString("id")) = False Then
    DeleteVehicle(Request.QueryString("id"))
End If

答案 1 :(得分:1)

  1. C#/VB.Net中没有过载,它在GetKey函数中提供字符串参数。
  2. 如果您检查Page Life Cycle的所有事件,Request.QueryString值永远不会为空(此外,它包含一些非空值)。
  3. 尝试更改以下代码。

  4. If Request.QueryString("id") IsNot Nothing 
                     AndAlso String.IsNullOrEmpty(Request.QueryString("id")) = False Then
        DeleteVehicle(Request.QueryString("id").ToString)
    End If
    

答案 2 :(得分:0)

我建议使用Params集合。这将对Querystring以及基于Form的参数都非常有用。您可以像这样对“ id”进行简单的测试。

Request.Params.AllKeys.Contains("id")