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) –