Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 基于ViewBag值ASP.net MVC4显示部分HTML_C#_Asp.net_Asp.net Mvc_Asp.net Mvc 4 - Fatal编程技术网

C# 基于ViewBag值ASP.net MVC4显示部分HTML

C# 基于ViewBag值ASP.net MVC4显示部分HTML,c#,asp.net,asp.net-mvc,asp.net-mvc-4,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(

在我的控制器中:

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.Label(“类型”)
@Html.DropDownList(“成员类型”,“IEnumerable”ViewBag.Type,“成员类型”)
如果(ViewBag.MemberType==“2”)
{
@LabelFor(model=>model.State)
@CheckBoxFor(model=>model.State,新的{@class=“checkbox”,@type=“checkbox”})
}
下拉列表显示有两个选项,但在选择项目时不会发生任何事情。我试图根据运行时的用户选择显示HTML的一部分。

您在条件中使用了“ViewBag.MemberType”,但该对象不存在。最好使用jquery来处理此问题:

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

$("#MemberType").on("change", function () {
  if ($(this).val() == 2) {
    $("#stateDiv").show();
  }
});
上述代码最初隐藏“状态”,直到从下拉列表中选择一个值。如果选择的值==2,则显示“状态”

最后,将您的“状态”重命名为我在上面的示例代码中提供的名称:

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

@LabelFor(model=>model.State)
@CheckBoxFor(model=>model.State,新的{@class=“checkbox”,@type=“checkbox”})

您是否尝试过:Razor代码在传递到视图之前在服务器上进行解析。您需要在客户端的javascript/jquery中处理dropdownlist的
.change()
事件。而您的
if
块意味着如果
ViewBag.MemberType
的初始值不是
“2”
,则不会为
状态呈现html
注意
@type=“checkbox”
也有点毫无意义,因为
CheckBoxFor()
方法添加了这一点