你调用的对象是空的。 Request.Query String

时间:2013-04-17 02:51:53

标签: c# asp.net string

我知道有人问过这个问题,但这是我的理由:

正确的网址是:http://localhost:1478/application/ProductID.aspx?ID=1001

这将检索我的产品列表。但是,如果我删除查询字符串,请说:

http://localhost:1478/application/ProductID.aspx 

错误是未将对象引用设置为对象的实例。在这个问题中是否有任何错误处理实现?

4 个答案:

答案 0 :(得分:2)

更改

string ProductID = Request.QueryString["ID"].ToString(); 

 if(!string.IsNullOrWhiteSpace(Request.QueryString["ID"]))
 {
    string ProductID = Request.QueryString["ID"]; 
    DataList1.DataSource = showResult.ShowProductResult(ProductID);
 } 
 else
 {
    //Do something when Id is empty or null
    //DataList1.DataSource =null;
 }

答案 1 :(得分:1)

基本上你得到了这个错误,因为页面需要缺少的信息来完成它的过程。

如果您希望它在没有错误的情况下运行,那么您需要一个“if”块来检查是否已在查询字符串或网址中传递(产品)Id参数。

VB

If trim(request("ID")) <> "" Then
  'Do your product search here and display the results in your page HTML 
Else
  'No product ID parameter was passed! - You may optionally display this fact in your HTML
End If

C#

if (!string.IsNullOrEmpty(request("ID")) {
  //Do your product search here and display the results in your page HTML 
} else {
  //No product ID parameter was passed! - You may optionally display this fact in your HTML
}

答案 2 :(得分:0)

更改

string ProductID = Request.QueryString["ID"].ToString(); 

 string ProductID="";
 if(Request.QueryString["ID"]!=null)
 {
    ProductID = Request.QueryString["ID"].ToString(); 
    DataList1.DataSource = showResult.ShowProductResult(ProductID);
 } 
 else
 {
    //DataList1.DataSource =null;
 }

答案 3 :(得分:0)

尝试这种方式,首先检查条件,查询字符串返回不为null。见下面的代码。

int ProductID ;
if(Request.QueryString["ID"]!=null)
 {
    ProductID =Convert.ToInt32( Request.QueryString["ID"].ToString()); 
    showResult.YourmethodName(ProductID);
 } 
 else
 {
    //Show one error lik "INVALID URL" ,Please go back
 }