7

ビューの場合、いくつかのチェックボックスを生成する必要があります。

私はアイテムのコレクションを1つ持っています:

public class ItemSelection
    {
        public int Id { get; set; }
        public String Name { get; set; }
        public Boolean IsSelected { get; set; }
        public Boolean IsActive { get; set; }
    }

ビューで、私はこれを繰り返しています

@foreach(ItemSelection item in Model.Items){
   Html.CheckBoxFor(m=>item.IsSelected)//HERE I WOULD LIKE TO HAVE DISABLED properties if I've a IsActive=falsel
   Html.HiddenFor(m=>item.Id)
}

このプロパティに応じて、別の HtmlAttribute 配列を作成する「if」を実行できることがわかりましたが、1 つの配列のみを作成する方法はありますか

new {disabled=item.IsActive?"ONE_SPECIAL_VALUE_HERE":"disabled"}

false、または他のものを入れようとしましたが、何も機能しませんでした。

4

1 に答える 1

8

を避けることはできませんif:

disabledサンプルを機能させる「特別な」値がないため、属性特別な性質に問題があります。

「無効」は、この属性で可能な値のみです。入力を有効にする必要がある場合は、属性を完全に省略してください。

したがって、コントロールを有効にするには属性を省略する必要がありますが、すべての HTML ヘルパーは、htmlattributes として渡された匿名オブジェクトのすべてのプロパティをシリアル化します。また、匿名型に条件付きでプロパティを追加する方法はありません。

ただし、有効化/無効化の場合に複数の共通属性があり、2 つの匿名型を作成したくない場合は、属性をオプションのdisabled属性を持つ辞書に入れ、その辞書を htmlAttributes として使用できます。

var checkboxHtmlAttributes = new Dictionary<string, object>
                                {{"attibute1", "value1"}, 
                                {"attribute2", "value2"}};
if (!item.IsActive)
{
    checkboxHtmlAttributes.Add("disabled", "disabled");
}
@Html.CheckBoxFor(m=>item.IsSelected, checkboxHtmlAttributes)
于 2012-05-01T07:11:15.570 に答える