显示基于ViewBag Value ASP.net MVC4的HTML的一部分

时间:2015-05-01 12:12:01

标签: c# asp.net asp.net-mvc asp.net-mvc-4

在我的控制器中:

ViewBag.Type = new[]
{
    new SelectListItem { Value = "1", Text = "Campaign Member" },
    new SelectListItem { Value = "2", Text = "Support Member" },
};

在我看来:

<div class="form-group">
    @Html.Label("Type")
    @Html.DropDownList("MemberType", (IEnumerable<SelectListItem>)ViewBag.Type, "Member Type")
</div>
if (ViewBag.MemberType == "2")
{
    <div class="form-group">
        @Html.LabelFor(model => model.State)
        @Html.CheckBoxFor(model => model.State, new { @class = "checkbox", @type = "checkbox" })
    </div>
}

下拉列表显示有两个选项,但在选择项目时没有任何反应。我试图在运行时根据用户选择显示HTML的一部分。

1 个答案:

答案 0 :(得分:0)

您正在使用&#34; ViewBag.MemberType&#34;在您的条件中,但该对象不存在。你最好用jquery来处理这个问题:

$("#stateDiv").hide();

$("#MemberType").on("change", function () {
  if ($(this).val() == 2) {
    $("#stateDiv").show();
  }
});

上面的代码最初隐藏了&#34;状态&#34;直到从下拉列表中选择一个值。如果选择的值== 2,则显示&#34;状态&#34;

最后,重命名你的状态&#34;我在上面的示例代码中提供的名称:

<div id="stateDiv" class="form-group">
  @Html.LabelFor(model => model.State)
  @Html.CheckBoxFor(model => model.State, new { @class = "checkbox", @type = "checkbox" })
</div>