MVC 5隐藏文本框

时间:2017-09-29 15:43:47

标签: c# asp.net-mvc asp.net-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>

我希望使用默认值使其有条件地不可见,否则由客户填写。

实现这一目标的最佳方法是什么。我已经能够有条不紊地使文本框不可见,但随后我的表单失败,  if(ModelState.IsValid)无效...如何将默认值传递给它?

3 个答案:

答案 0 :(得分: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的基础上,我们正在创建隐藏字段并设置它的默认值,否则它将生成文本框,用户需要填写值。

希望它有所帮助!

答案 1 :(得分: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);
    }
});

答案 2 :(得分:0)

以下是我的表现......在我看到你的精彩答案之前,我想出来了......谢谢你的帮助!!

@if(true)         {         投入档案         }         其他         {             @ Html.EditorFor(model =&gt; model.Client_PID,new {htmlAttributes = new {style =&#34; display:none&#34;}})         }

也许这不是最佳做法?