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

asp.net – 动态CheckBoxFor有一些禁用

发布时间:2020-12-16 06:30:59 所属栏目:asp.Net 来源:网络整理
导读:我正在尝试创建一个动态CheckBoxFor,其中一些项被禁用. 这会禁用所有内容: @Html.CheckBoxFor(m=m.Checked,new { @disabled = "disabled"}) 我试图创造这样的东西没有成功: @Html.CheckBoxFor(m=m.Checked,new{ @disabled = @(Model.Disable ? "disabled"
我正在尝试创建一个动态CheckBoxFor,其中一些项被禁用.

这会禁用所有内容:

@Html.CheckBoxFor(m=>m.Checked,new { @disabled = "disabled"})

我试图创造这样的东西没有成功:

@Html.CheckBoxFor(m=>m.Checked,new{ @disabled = @(Model.Disable ? "disabled" : "")})

请注意,我的模型有一个名为Disabled的属性和另一个Checked.

解决方法

它不起作用,因为disabled属性会禁用CheckBox,无论它的值是什么.

我不知道如何在一行中做到这一点,但这是一个解决方案:

@if(Model.Disabled)
{ 
    @Html.CheckBoxFor(m=>m.Checked,new { @disabled = "disabled"})
}
else
{
    @Html.CheckBoxFor(m=>m.Checked)
}

潜在的Html Helper扩展:

public static MvcHtmlString CheckBoxFor<TModel>(
        this HtmlHelper<TModel> helper,Expression<Func<TModel,bool>> expression,object htmlAttributes,bool isDisabled)
{
    var dic = htmlAttributes.GetType()
             .GetProperties()
             .ToDictionary(p => p.Name,p => p.GetValue(htmlAttributes,null));

    if (isDisabled)
        dic["disabled"] = "disabled";

    return helper.CheckBoxFor(expression,dic);
}

(编辑:李大同)

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

    推荐文章
      热点阅读