如何在mvc 3中隐藏radow视图中的dropdownfor?

时间:2012-05-15 11:01:25

标签: asp.net-mvc asp.net-mvc-3 razor

我想根据asp.net mvc 3 razar视图中的类属性值隐藏下拉列表

3 个答案:

答案 0 :(得分:4)

您可以将CSS类应用于下拉列表:

@Html.DropDownListFor(x => x.SelectedItemId, Model.Items, new { @class = "hidden" })

然后定义隐藏的CSS类:

.hidden {
    display: none;
}

这个隐藏类当然可以根据视图模型的某些属性值动态应用。例如,您可以编写一个自定义HTML帮助程序,可以这样使用:

@Html.DropDownListFor(
    x => x.SelectedItemId, 
    Model.Items, 
    Html.GetHtmlAttributes(Model.IsHidden)
)

GetHtmlAttributes是您可以编写的自定义扩展方法:

public static class HtmlExtensions
{
    public static RouteValueDictionary GetHtmlAttributes(bool isHidden)
    {
        if (!isHidden)
        {
            return null;
        }

        return new RouteValueDictionary(new { @class = "hidden" });
    }
}

答案 1 :(得分:4)

您想完全排除下拉列表吗?

@if (!Model.DontShowDropdown)
{
    @Html.DropDownListFor(....)
}

或者,你想隐藏吗?

Html.DropDownListFor(..., new { "style" = Model.DontShowDropDown ? "display:none" : "" };

答案 2 :(得分:0)

您可以使用此前缀:

@Html.DropDownList("mydropdown", new SelectList(new[] {
    new SelectListItem{ Value = "0",Text="Item1"},
    new SelectListItem{ Value = "1",Text="Item2"},
    new SelectListItem{ Value = "2",Text="Item3"},
    new SelectListItem{ Value = "3",Text="Item4"}
}, "Value", "Text", "2"), new
{
    id = "mydropdown",
    @class = "myddClass",
    style = ""
})

在css中添加 #mydropdown .myddClass ,然后您可以在外部css中添加 display:none; 或添加将其添加到内联css喜欢 style =“display:none;”