2012-05-15 68 views

回答

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" }); 
    } 
} 
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,那麼你可以添加display:none;在外部的CSS或添加它添加到內聯的CSS像style =「display:none;」

4

你想完全排除下拉菜單嗎?

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

或者,你想隱瞞它嗎?

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

+1。一個簡單的if語句聽起來像他想要的。 – Doomsknight

+0

此語法顯示一些錯誤 – pargan

+0

@pargan,您使用的完整代碼是什麼導致語法錯誤? – Tass