2017-04-03 3 views
1

TextBoxForを使用しています。プロパティがNULLかブランクかどうかを確認する必要があります。もしそうなら、エンドユーザーに情報を入力させる必要があります。そうでなければ、私は彼らの名前を見つけることができます、私はフィールドを無効にする必要がありますので、彼らはそれを変更することはできません。MVC 5 TextBoxFor条件付きブートストラップCSSを行うことができませんか?

これらの2つのオプションを検索して試しましたが、機能しません。

@Html.TextBoxFor(m => m.EmployeeName, string.IsNullOrWhiteSpace(Model.EmployeeName) ? new { Class = "form-control" } : new { Class = "form-control", disabled = "disabled" }) 

@Html.TextBoxFor(m => m.EmployeeName, new { Class = "form-control", string.IsNullOrWhiteSpace(Model.EmployeeName) ? disabled = "disabled" : null }

私が試すことができるか上の任意のアイデア?

+0

TextBoxForコントロールを@ifステートメントにラップすることができますか?本当にmvcではなく、私はそれが動作すると思う。 –

+0

私はそれを行うことができると確信していますが、私はあなたがそれを行うより良いMVCの方法があると思うと言ったように。私はそれを行うには約5つのテキストボックスを持っているので、誰かが何かにアイデアを持っていることを願っていれば、私はそうするでしょう。 – Caverman

答えて

1

2つの匿名型の間には暗黙的な変換がないので、あなたの現在のコードがエラーを与えることになり、あなたがobject

var attributes = String.IsNullOrWhiteSpace(Model.EmployeeName) ? 
    (object)new { @class = "form-control" } : 
    (object)new { @class = "form-control", disabled = "disabled" }) 

@Html.TextBoxFor(m => m.EmployeeName, attributes) 

注意にそれらをキャストする必要があるだろうがコントロールを無効にすると、その値がないことを意味していること提出されるので、最初にEmployeeNameに値がある場合、提出された時点でnullとなります。代わりにreadonly = "readonly"を使用することを検討してください。

+0

私はそれを使用することができます。私は "無効"と "読み取り専用"の違いを見ていきますが、従業員名のようなものを隠しフォームフィールドに保存しなければなりません。 – Caverman

関連する問題