加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 使用disabled =“disabled”属性创建一个SelectL

发布时间:2020-12-15 18:47:03 所属栏目:asp.Net 来源:网络整理
导读:我没有看到通过HtmlHelper创建一个将会吐出以下HTML的SelectListItem的方法: option disabled="disabled"don't click this/option 唯一的物业 SelectListItem 有: new SelectListItem{ Name = "don't click this",Value = string.Empty,Selected = false}
我没有看到通过HtmlHelper创建一个将会吐出以下HTML的SelectListItem的方法:
<option disabled="disabled">don't click this</option>

唯一的物业SelectListItem有:

new SelectListItem{
  Name = "don't click this",Value = string.Empty,Selected = false
}

我看到的唯一选择是

>将SelectListItem子类添加到Enabled属性以获取视图的值
>不使用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());
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读