2017-08-10 31 views
1

@htmlヘルパー関数で生成されたhtmlにdisable属性を追加しようとしていますが、htmlヘルパーのattribパラメータで動作するものが得られないようです。私は以下のものはまだhtmlのために無効に書かれます...しかし、私はそれがヘルパーが動作しない原因でそれを削除することはできません。razor @htmlヘルパーを使用した条件付きHtml属性

iは、定義された変数があります。

@{ var displayItem = (Model.TypeId == 100) } 

@Html.TextBox("listitem", "", new {@class = "form-control", @disabled = (@displayItem ? "" : "disabled")}) 

を私は@disabledパラメータのリストを表示する必要があるため、それがこのようなHTML生成:

<input class="form-control" disabled="" id="listitem" name="listitem" type="text" value="" /> 

無効になっているため、入力を無効にリストされています。私はそれにパラメータ名を与えない限り、HTMLヘルパーは動作しません。

無効にする必要がない場合は、無効にしないようにパラメータリストに無効な値を書き込む方法はありますか?

答えて

1

あなたは

@{ var displayItem = (Model.TypeId == 100) } 
@Html.TextBox("listitem", "", displayItem ? (object)new { @class = "form-control", disabled = "disabled" } : (object)new { @class = "form-control"}); 

または

@{ 
    var attributes = Model.TypeId == 100 ? (object)new { @class = "form-control", disabled = "disabled" } : (object)new { @class = "form-control"}); 
} 
@Html.TextBox("listitem", "", attributes) 

または無効にコントロールの値が提出されていないという単純なifブロック

@(if Model.TypeId == 100) 
{ 
    @Html.TextBox("listitem", "", new {@class = "form-control", disabled = "disabled" }) 
} 
else 
{ 
    @Html.TextBox("listitem", "", new {@class = "form-control" }) 
} 

注ので、readonly属性かもしれないを使用することができますより適切になる

+0

属性パラメータの作成にいくつかのやりかたがあるのか​​どうか疑問に思っていましたが、そうは思いません。 Tx。 – user1161137

関連する問題