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()
方法添加了这一点