自訂method來處理request.querystring

每次遇到用url傳參數時都會因為有時參數沒有傳而導致錯誤

一般忘記判斷Request.QueryString["plcaeNo"]!=null時會這樣寫

每次遇到用url傳參數時都會因為有時參數沒有傳而導致錯誤

一般忘記判斷Request.QueryString["plcaeNo"]!=null時會這樣寫


string _result;
int plcaeNo;
if (int.TryParse(Request.QueryString["plcaeNo"].ToString(), out plcaeNo)) {
    // dosomething
}

結果伴隨來的常常會看到這個畫面

image

所以通常得這樣寫才對


string _result;
int plcaeNo;
if (Request.QueryString["plcaeNo"] != null && int.TryParse(Request.QueryString["plcaeNo"].ToString(), out plcaeNo)) {
    // dosomething
}

 

說真的

這樣還真的有點麻煩

每次都要打那麼多code,多宣告一個object物件去參照Request.QueryString["plcaeNo"]可以省一點code

但是還真的有點浪費,因為通常接到的參數型別錯誤就用不到剛剛宣告的object的

乾脆來寫一個method好了


protected bool GetParameter<T>(object input, out T output) {
    if (input != null) {
        try {
            object tryObject = Convert.ChangeType(input, typeof(T));
            output = (T)tryObject;
            return true;
        } catch (Exception) {
            output = default(T);
            return false;
        }
    } else {
        output = default(T);
        return false;
    }
}

然後這樣使用即可

 


DateTime _result;
if (GetParameter<DateTime>(Request.QueryString["plcaeNo"], out _result)) {
    Response.Write(_result.ToString());
} else {
    Response.Redirect("~/error.aspx");
}

寫的不美

請多見諒

歡迎批評指教

感謝^^