gpt4 book ai didi

asp.net-mvc - 使用禁用的 ="disabled"属性创建 SelectListItem

转载 作者:行者123 更新时间:2023-12-03 10:23:10 24 4
gpt4 key购买 nike

我没有看到通过 HtmlHelper 创建的方法, SelectListItem这将吐出以下 HTML:

<option disabled="disabled">don't click this</option>

唯一的属性 SelectListItem 有:
new SelectListItem{
Name = "don't click this",
Value = string.Empty,
Selected = false
}

我看到的唯一选择是
  • 子类 SelectListItem添加 Enabled属性以获取 View 的值
  • 不使用 HTML helper for DropDownList
  • 新建 HtmlHelper接受我的新扩展 EnablableSelectList并添加我的 disabled属性。
  • 最佳答案

    这是我在完全重新创建助手之前可能会尝试的事情。基本思想是,您从帮助程序获得的 Html 应该格式良好,因此解析应该是安全的。因此,您可以通过创建自己的扩展来构建该想法,该扩展使用现有扩展但添加了禁用项目的功能。

    这样的事情可能会做(完全未经测试)

    public class CustomSelectItem : SelectListItem
    {
    public bool Enabled { get; set; }
    }

    public static class CustomHtmlHelpers
    {
    public static MvcHtmlString MyDropDownList(this HtmlHelper html, IEnumerable<CustomSelectItem> selectList)
    {
    var selectDoc = XDocument.Parse(html.DropDownList("", (IEnumerable<SelectListItem>)selectList).ToString());

    var options = from XElement el in selectDoc.Element("select").Descendants()
    select el;

    foreach (var item in options)
    {
    var itemValue = item.Attribute("value");
    if (!selectList.Where(x => x.Value == itemValue.Value).Single().Enabled)
    item.SetAttributeValue("disabled", "disabled");
    }

    // rebuild the control, resetting the options with the ones you modified
    selectDoc.Root.ReplaceNodes(options.ToArray());
    return MvcHtmlString.Create(selectDoc.ToString());
    }
    }

    关于asp.net-mvc - 使用禁用的 ="disabled"属性创建 SelectListItem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2655035/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com