在HTML中,input標籤能夠經過type屬性設置爲checkbox。同時,也就包含了一個checked屬性。對於這個checked屬性,有一個特別的地方就是,它能夠不須要屬性值就能夠表示是否選擇了。這背後的緣由是源自於早期的HTML,checked是一個獨立的boolean屬性。html
因此給1)checked賦值true瀏覽器
<input type="checkbox" checked="true" />
和2)直接寫checkedspa
<input type="checkbox" checked />
是等價的。翻譯
我在按照精通ASP.NET MVC4 和精通ASP.NET MVC5第5.4.2節中按照書中例子寫了代碼以下:code
Discount:<input type="checkbox" checked ="@ViewBag.ApplyDiscount"/> Express:<input type="checkbox" checked ="@ViewBag.ExpressShip"/> Supplier:<input type="checkbox" checked ="@ViewBag.Supplier"/>
這裏在checked 和 等號之間有一個空格,這就致使了razor在解析的時候直接把checked按照上面說的第二種方式解析了,這就致使了三個選項都被勾選,並且後面的ViewBag對象的屬性被直接解釋爲了各自原本的意思。而不是按照書上所說,根據值得不一樣要麼直接不解析checked屬性,要麼checked屬性被賦值爲checked即checked="checked"。上面的代碼去掉空格就能夠正確顯示了。這也提醒我,在寫checked屬性時不要手賤打空格。htm
書裏面在這一節最後一段第二句說的不明不白的,這裏並非翻譯的問題,我找到了原書,原書寫的也是不明不白。書中是這樣說的:對象
「若是Razor插入False、null或者空字符串做爲checked標籤屬性的值,那麼,瀏覽器顯示的複選框時已勾選的。可是,Razor在值爲False或者null時,會徹底栓除該屬性標籤」。這句話的意思是說,若是在Razor中checked被賦值爲False、null或者空字符串時,瀏覽器會直接渲染成已勾選狀態。而若是使用的是相似於上面ViewBag這種須要Razor求值的情況,就會自動把False、null和空字符串刪掉這樣就不會有勾選狀態了。blog
附上在爆棧網上的提問。關於checked的詳細看回答者。ip