通過CommandArgument傳遞多個參數的嘗試

最近在做一個電子商務的小項目,需要使用控件的CommandName和CommandArgument屬性來傳遞參數,僅僅傳遞一個參數時很簡單,直接e.CommandArgument就可以使用,如果要傳遞多個參數呢,於是自己試驗了一下。
    剛開始的思路是按多個參數的方式傳遞,後來發現CommandArgument是一個object類型的屬性,明顯行不通。於是想能不能把多個參數當成一個參數傳遞,傳過來之後再進行拆分?
    於是寫了如下代碼:
            object[] arguments = e.CommandArgument.ToString().Split(',');
            int pID = Convert.ToInt32(arguments[0]);
            string pName = arguments[1].ToString();
            double pPrice = Convert.ToDouble(arguments[2]);
這樣的話就要求參數以字符串的形式進行合併。我想讓參數以“1,iAmTheName,19.99”的形式傳遞,於是就開始嘗試參數的書寫形式,最開始在頁面端寫的是:CommandArgument='<%#eval_r("ProductID")%>,<%#eval_r("ProductName")%>,<%#eval_r("ProductPrice")%>'
編譯錯誤,提示預處理器指令必須作爲一行的第一個非空白字符出現,於是改爲                        CommandArgument='<%#eval_r("ProductID"),eval_r("ProductName"),eval_r("ProductPrice")%>'
同樣編譯錯誤,但是這次提示“ToString”方法沒有采用“4”個參數的重載。這個提示讓我很感興趣,ToString方法是什麼意思?難道它是把參數先ToString一下在裝成object?於是把參數改成:
CommandArgument='<%#eval_r("ProductID")+","+eval_r("ProductName")+","+eval_r("ProductPrice")%>'
嘿嘿,成功!
由此可以推斷出它的執行過程:先綁定到eval_r("")字段,然後把<%# %>裏的東西ToString一下,再封裝成object進行傳遞。
由此,CommandArgument屬性也可以傳遞多個參數的。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章