關注細節之頁面傳值

關於頁面傳值,網上討論最多的是session、Request.QueryString、 ViewState等等之間的區別,並且這些區別也被大家熟記於心。但是編者今天偶然做web應用時,碰到問題如下:

系統框架採用orm關係映射,從A頁面傳varchar類型的值“StuNO”時,發現在B頁面找不到對應的信息。

A頁面代碼如下 Response.Redirect("StuInfoDetail.aspx?StuNo="+DDL_Stu.SelectedValue);

B頁面接收代碼如下:

 if (!IsPostBack)
            {
                try
                {
                    StuNo = Request.QueryString["StuNo"].ToString();
                }
                catch
                {
                }
                DDL_StuBind();
                if (StuNo != "")
                {
                    DDL_Stu.SelectedValue = StuNo ;
                }               
            }


其中 DDL_Stu.SelectedValue = StuNo ;的賦值不成功,DDL_Stu.SelectedValue的值仍然爲默認值,而不是StuNO的值,經檢查發現StuNO='0002' ,DDL_Stu.SelectedValue='0001    ',也就是 Request.QueryString["StuNo"]會自動去掉StuNO中的前後空白部分,'0001   '傳遞後變爲了'0001',,導致匹配不成功。


第二個問題,筆者有用的數據其實是'0001',但是數據庫中存的卻是'0001   ',檢查發現,出現上述問題的原因是因爲數據庫StuNO類型爲char(8),對於不存在數據的部分,sql server數據庫自動填充了空白。


細節永遠很重要!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章