asp.net - Dynamic CheckBoxFor 禁用了一些

标签 asp.net asp.net-mvc-3 checkbox

我正在尝试创建一个动态 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);
}

关于asp.net - Dynamic CheckBoxFor 禁用了一些,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10132962/

相关文章:

javascript - jquery 如何获取选中复选框的值?

java - 如何限制ListView中的复选框被选中?

asp.net - 如何在 ASP.NET 中将文件路径转换为 ​​URL

asp.net-mvc-3 - asp.net MVC3 图像在编辑/创建页面上中断,在索引上正常

asp.net - 如何检测移动网络浏览器及其屏幕大小

asp.net-mvc - 未找到必需属性 'pageBaseType' - 启动我的 MVC 3 应用程序时出现 YSOD

c# - 将模型从一个 Action 传递到同一 Controller 中的另一个 Action

javascript - 如何存储复选框true/false的结果

c# - 当 RegisterEventBus "No service for type Autofac.ILifetimeScope' 已注册时。

asp.net - SwaggerSchema 不适用于我自己的对象