2012-04-12 3 views
4

私はいくつかの項目が無効になっている動的CheckBoxForを作成しようとしています。動的CheckBoxForいくつかの無効と

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

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

これはすべて無効にされて

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

つのノートを、私のモデルは、障害者と呼ばれる性質を持っており、別のチェック。

答えて

7

無効な属性は値が何であるかにかかわらずCheckBoxを無効にするため機能しません。

は、私が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); 
} 
+0

そして、私がチェックを定義したい場合は/未検査。多くの「もし」がコードを読むのが難しくなるでしょう – Custodio

+0

@ Custodio私は私の答えを編集しました。 Checked/Checkedは既にChecked変数に含まれているので、明示的に定義する必要はありません。 – DMulligan

関連する問題