問題記錄:
問題描述:C# MVC @Html. DropDownListFor() @Html.EnumDropDownListFor() 禁止不可選
Post 提交表單不會綁定值問題(賦不到值)。
問題:想要在添加數據的時候要把指定的字段通過其他的方式動態賦值,讓該元素的不能被選擇。
這邊假設要賦值屬性為TestType
@Html.DropDownListFor(m=>m.TestType,....,new{disabled="disabled"})
或
@Html.EnumDropDownListFor(m=>m.TestType,....,new{disabled="disabled"})
說明:
試錯方法一:本來是想可以直接給htmlAttribute 中添加一個 disabled=”disabled”, 就可以直接不能選,但是出現問題就是 post提交的時候值綁定不到Model上
試錯方法二:@readyOnly=true 但是下拉框還是可以下拉 所以也沒達到自己的效果。
試錯方法三:也試了在前面或后面加一個@Html. HiddenFor(m=>m.TemplateType) 把這個元素加到前面是可以賦值了,但是顯示出來的@Html. DropDownListFor() 或@Html.EnumDropDownListFor()賦值不到
說明:原先試了好幾種方式都不能賦值,然后在Stackoverflow 中看到了一個解決方案
https://stackoverflow.com/questions/1636103/html-dropdownlist-disabled-readonly#
解決方法:通過@readOnly=true和css 來處理了這個問題
步驟一:將類型屬性設置為@readOnly=true
步驟二:給這個值設定為:pointer-events:none
這句的作用是 元素永遠不會成為鼠標事件的target。
最后:如果你有其他的解決方案可以在評論區分享一下。