2014-12-08 4 views
-1

쿼리 문자열을 통해 한 페이지에서 다른 페이지로 일부 값을 전달할 때 값을 올바르게 전달한 다음 성공적으로 저장 프로 시저로 전달하지만 Request.QueryString["something"]을 반복해서 입력하면 매우 자극적이므로 메소드를 작성했지만 메소드가 값을 리턴/전달하지 않고 nullreference 예외가 발생합니다.쿼리 문자열 반환 값을 반환하지 않는 메서드

protected void Page_Load(object sender, EventArgs e) 
{ 
    try 
    { 
     using (Property_dbDataContext context = new Property_dbDataContext()) 
     { 
      _errMsg.Enabled = false; 
      _errMsg.Visible = false;      

      var find_prop = context.find_property(val("city"), val("type"), val("subtype"), val("bedrooms"), val("size_unit"), Convert.ToInt32(val("area_from")), Convert.ToInt32(val("areato")), Convert.ToInt32(val("pricefrom")), Convert.ToInt32(val("priceto"))).ToList(); 
      //code above does not return any value 

      //var find_prop = context.find_property(Request.QueryString["city"], Request.QueryString["type"], Request.QueryString["subtype"], Request.QueryString["bedrooms"], Request.QueryString["size_unit"], Convert.ToInt32(Request.QueryString["area_from"]), Convert.ToInt32(Request.QueryString["areato"]), Convert.ToInt32(Request.QueryString["pricefrom"]), Convert.ToInt32(Request.QueryString["priceto"])).ToList(); 
      //code above return value from the database but its a long procedure 

      rptr_properties.DataSource = find_prop; 
      rptr_properties.DataBind(); 
     } 
    } 
    catch(Exception ex) 
    { 
     _errMsg.Enabled = true; 
     _errMsg.Visible = true; 
     _errMsg.Text = "Sorry! Property not found." + ex; 
    } 
} 

public string val(string a) 
{ 
    return Request.QueryString["" + a + ""].ToString(); 
} 

답변

1
This will work 
    public string val(string a) 
    { 
     return Request.QueryString[a]; 
    } 
+0

감사합니다 ... 감사 ... 많이 ... 감사합니다 ... –

3

당신은 확인 항목에 액세스하기 전에 존재해야 :

귀하의 의견을 참조에서
public string val(string a) 
{ 
    if(Request.QueryString[a] != null) 
     return Request.QueryString[a].ToString(); 

    return string.Empty; 
} 

; 특히 :

Convert.ToInt32(val("area_from")) 

기본값은 빈 문자열이므로 문제가 발생할 수 있습니다. (32 int로 쿼리 문자열 값을 변환

var find_prop = context.find_property(ValToString("city"), ValToString("type"), ValToString("subtype"), ValToString("bedrooms"), ValToString("size_unit"), Convert.ToInt32(val("area_from")), Convert.ToInt32(val("areato")), ValToInt32("pricefrom"), ValToInt32("priceto")).ToList(); 
+0

System.FormatException : 입력 문자열의 형식이 잘못되었습니다. find_properties에서 System.Convert.ToInt32 (String value)의 System.Number.ParseInt32 (String s, NumberStyles 스타일, NumberFormatInfo 정보)의 System.Number.StringToNumber (String str, NumberStyles 옵션, NumberBuffer 및 number, NumberFormatInfo 정보, 부울 parseDecimal) .Page_Load (Object sender, EventArgs e) c : \ Users \ haide_000 \ Documents \ Visual Studio 2013 \ WebSites \ Property_site \ find_properties.aspx.cs : line 23 –

+0

int32로 변환했지만 여전히 작동하지 않았습니다. –

+0

답변을 표시했는데 작동했는데 ... –

0

더 나은 방법이 같은

뭔가 지금은 비록 작동해야합니다

public string ValToString(string a) 
{ 
    if(Request.QueryString[a] != null) 
     return Request.QueryString[a].ToString(); 

    return string.Empty; 
} 

public int ValToInt32(string a) 
{ 
    if(Request.QueryString[a] != null) 
     return Convert.ToInt32(Request.QueryString[a]); 

    return 0; 
} 

그런 다음 찾기 코드를 수정할 것) :

public int GetIntFromQueryString(string key) 
{ 
    int result = int.MinValue; 
    if(Request.QueryString[key] != null) 
    { 
     int.TryParse(Request.QueryString[key].ToString(), out result); 
    } 
    return result; 
} 

TryParse가 값을 변환하지 못하면 메서드가 'int.MinValue'를 반환합니다. 그러면 반환 된 값이 'int.MinValue'와 같지 않은지 확인할 수 있습니다.

관련 문제