asp-items
剃鬚刀「TagHelper」將爲SelectList
中的每個值添加<option>
到<select>
。我想修改每個孩子。TagHelper;如何修改動態添加的孩子
具體而言,我想禁用其中的一些(即添加disabled="disabled"
)。
更具體地說,我想動態禁用它們中的一些;我正在使用角度,所以我可以ng-disabled="{dynamic_boolean_which_determines_disabled}"
。這意味着該選項可以在第一時間被禁用,但在用戶進行更改後,可以禁用該選項(無需重新加載頁面)。 Angular應該照顧這個;我覺得角和TagHelpers在理論上應共同努力...
我預計:
我能以某種方式訪問一個IEnumerable的孩子將被創建<option>
標籤(即每個項目提供的SelectList
),迭代子標籤,和setAttribute( 「禁用」)或的setAttribute( 「NG-禁用」)...
我想:
- 創建我自己的TagHelper,它以
select[asp-items]
爲目標,並嘗試使GetChildContentAsync()和/或SetContent達到IEnumerable<option>
標記並迭代它們並處理它們,但我認爲這隻會讓我修改整個InnerHtml作爲字符串;感覺哈克做一個String.replace,但我可以做到這一點,如果這是我唯一的選擇?即ChildrenContent.Replace("<option", "<option disabled=\"...\"")
- 創建我自己的TagHelper其目標爲
option
元素是select[asp-items]
的孩子,所以我可以每個單獨過程。這是有效的,但不是由asp-items
創建的動態添加<option>
,它只適用於我實際放入我的cshtml標記中的「literal」<option>
標記。
我認爲這會工作,但並不理想:
- 正如我前面所說,我想我可以得到的TagHelper的動態ASP-項目
<option></option> <option></option>
的結果,作爲一個字符串,並做一個字符串替換,但我不喜歡直接使用字符串... - 我懷疑(我還沒有嘗試過),我可以自己做
asp-items
的工作;即custom-items
。但是,我通過重新執行asp-items
可能爲我完成的工作來重新創建輪子?
只是要提[@Daniel J.G.(https://stackoverflow.com/users/1836935/daniel-j-g),因爲他們似乎知道了很多。但我想「@」該用戶[可能不會按我期望的方式工作:]](https://meta.stackexchange.com/questions/43019/how-do-comment-replies-work) –