4

一部のアイテムが無効になっている動的なCheckBoxForを作成しようとしています。

これはすべてを無効にします:

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

私は成功せずにこのようなものを作成しようとしていました:

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

1つの注意点として、私のモデルには、Disabledと別のCheckedというプロパティがあります。

4

1 に答える 1

7

値が何であるかに関係なく、disabled属性がCheckBoxを無効にするため、機能していません。

これを1行で行う方法はわかりませんが、次の1つの解決策があります。

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

潜在的なHTMLヘルパー拡張機能:

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);
}
于 2012-04-12T23:07:40.380 に答える