前幾天在使用ViewBag傳遞布林值時,遇到了些詭異的狀況...
這邊大概寫個範例程式來重現當時的狀況,以下為controller跟view的程式:
大家可以猜猜看會輸出什麼樣的內容,下面為畫面呈現的結果:
除了布林的部分之外,其他的欄位顯示都還在預期內,於是不死心的我便嘗試換個寫法,直接塞布林值進去看看。
先前還以為是viewbag的問題,結果看到這邊忽然間恍然大悟,原來兇手不是它。但是基於好奇心,想知道一樣的狀況如果發生在HtmlHelper的時候會怎樣,所以就把textBox也加了上去。
這邊我們可以發現,在Html.TextBox裡面完全不會有這個狀況的發生,所以是否可以直接用一樣的方式將ViewBag.BoolValue塞給它呢?
答案從上圖就可以直接得知了,所以依照提示嘗試轉換成字串能不能正常輸出。這邊主要將ViewBag.BoolValue轉換成字串然後丟給BoolValue,然後在塞給input tag跟Html.TextBox。
這部分在一些原生的程式在塞值時就會有這樣的問題,像是純html tag、javascript,所以相對的在angularjs跟jquery的部分也會有一樣的問題發生。所以如果要塞布林值的話,要先進行轉型處理。不過有些大小寫的部分還是要注意,因為轉換出來的布林字串第一碼是大寫,所以除了轉換成字串之外,還得處理大小寫的部分,不然會在有些地方會有對應上的問題。