显示和隐藏控制器和视图中的控件

本文关键字:控件 控制器 隐藏 显示 视图 | 更新日期: 2023-09-27 18:02:52

我正试图为此创建一个最好的解决方案,但由于这是我第一次遇到这种情况,所以我不确定如何最好地实现这一点。

我有一个非常简单的模型,

public class Feedback
{       
[Required]
[Display(Name = "Current ID")]
public int? PreviousID { get; set; }
[Required]
[Display(Name = "Next ID")]
public int? NextID { get; set; }
[Required]
public int ScenarioID { get; set; }
[Display(Name = "Select you scenario")]
public IEnumerable<SelectListItem> YourScenario { get; set; }

}

当用户第一次加载视图时,只显示YourScenario的下拉列表和PreviousID的文本框。当用户选择下拉列表时,根据其值,NextID的文本框显示给用户。以下是我的观点

<div class="form-group">
   @Html.LabelFor(m => m.YourScenario, new { @class = "col-sm-3 control-label" })
      <div class="col-sm-9">
        @Html.DropDownListFor(m => m.ScenarioID, m.YourScenario, "Choose Scenario", new { @class = "form-control chosen-select" })
    </div>
</div>
<div class="form-group">
   @Html.LabelFor(m => m.PreviousID, new { @class = "col-sm-3 control-label" })
   <div class="col-sm-9">
       @Html.TextBoxFor(m => m.PreviousID)
   </div>
</div>
<div class="form-group" style="display:none">
   @Html.LabelFor(m => m.NextID, new { @class = "col-sm-3 control-label" })
   <div class="col-sm-9">
       @Html.TextBoxFor(m => m.NextID)
   </div>
</div>

为了显示/隐藏NextID,我在视图上使用Jquery,

   $('#YourScenario').change(function () {
        var selectedValue = $(this).val();
        var nextID = $('#NextID');
        if (selectedValue = "3") {
            nextID .show();
        }
        else {
            nextID .hide();
        }
    });

这一切都很好。现在要使用与编辑模式相同的视图,我将模型从控制器传递给视图。我想要的是NextID的TextBox应该根据模型值自动显示或隐藏。如果我在视图上使用If条件,那么通过Javascript控件不可用,那么我如何实现这一点?

显示和隐藏控制器和视图中的控件

下面是一个简单的例子:https://jsfiddle.net/jma71jf7/

当您运行代码时,它将隐藏输入,因为没有选择的值,这一行将触发更改事件函数:

$('#YourScenario').trigger('change');

但是在编辑时,选择会有一些值,它会根据这个值隐藏/显示输入