2017-09-29 7 views
0

私はMVC 5で作成したフォームを持って下のテキストボックスがあります:MVC 5隠すテキストボックス

<div class="form-group"> 
     @Html.LabelFor(model => model.Client_PID, htmlAttributes: new { @class = "control-label col-md-2" }) 
     <div class="col-md-10"> 

      @Html.EditorFor(model => model.Client_PID, new { htmlAttributes = new { @class = "form-control" } }) 
      @Html.ValidationMessageFor(model => model.Client_PID, "", new { @class = "text-danger" }) 

     </div> 
</div> 

は私がによって記入される他、デフォルト値を持つ条件付きで目に見えないためにこれを作りたいです顧客。

これを達成する最良の方法は何ですか。条件付きでテキストボックスを非表示にすることができましたが、フォームに失敗しました (ModelState.IsValid)が有効でない場合はどうすればよいですか?これにどのようにデフォルト値を渡しますか?

+0

どのようなデフォルト値が必要ですか?これは、コントローラのactionresultメソッドでセットアップされる可能性があります。あなたもそれを投稿できますか? –

答えて

1

あなたはそれを非表示にすると、他の場合には、テキストボックスを生成することができますしたいときには、例えば、HiddenForを使用することができます。

@if(ShouldBeVisible) 
{ 
    @Html.EditorFor(model => model.Client_PID, new { htmlAttributes = new { @class = "form-control" } }) 
    @Html.ValidationMessageFor(model => model.Client_PID, "", new { @class = "text-danger" }) 
} 
else 
{ 
    @Html.HiddenFor(model => model.Client_PID,1) 
} 

boolのベースに、我々は隠しフィールドを作成し、それのデフォルトを設定していますそれ以外の場合はテキストボックスを生成し、ユーザーは値を入力する必要があります。

希望すると助かります!

0

入力チェックボックスとjQuery関数を使用して、この表示/非表示エフェクトとそのターゲットのデフォルト値を制御することもできます。

<label for="hidden"> 
    <input type="checkbox" id="hidden" class="display-hidden" data-target=".hidden" /> 
    Show Client ID? 
</label> 

<div class="form-group hidden"> 
    @Html.LabelFor(model => model.Client_PID, htmlAttributes: new { @class = "control-label col-md-2" }) 
    <div class="col-md-10"> 
     @Html.EditorFor(model => model.Client_PID, new { htmlAttributes = new { @class = "form-control" } }) 
     @Html.ValidationMessageFor(model => model.Client_PID, "", new { @class = "text-danger" }) 
    </div> 
</div> 

そして、jQueryの機能:

$(".display-hidden").click(function() { 
    var target = $(this).attr("data-target"); 
    if($(this).is(':checked'){ 
     $(target).fadeIn(320); 
    } else { 
     $(target).fadeOut(320); 
     $(target).val(//your default value); 
    } 
}); 
+0

jQuery関数を使用することの利点は、後で再び使用できることです。 – Tiramonium

+0

'.form-group'全体に' .hidden'を置くべきです。これははるかに良いユーザエクスペリエンスです。 –

+0

うん、そうだね、忘れてしまった。 – Tiramonium

0

ここでは、私はそれをやった方法です...私はあなたの素晴らしい答えを見て前に、私はそれを考え出した...助けてくれてありがとう!

@If(真の)他の { Html.EditorFor @(モデル=> model.Client_PID、新しい{htmlAttributes =新しい{スタイル= "表示:なし" {提出 で プット}}} ) }

おそらく、これはベストプラクティスではありませんか?

関連する問題