2016-02-08 80 views
0

我想弄清楚爲什麼Chrome不能正確渲染我的下拉列表。asp.net MVC,Bootstrap和CSS。下拉列表問題

Chrome Error

然而,它正確地呈現在IE

IE Error

這是代碼,該代碼

@Html.DropDownListFor(model => model.CountryID, new SelectList(Model.CountryList, "Value", "Text"), new { @class = "form-control", size = "18px" }) 

我使用的是默認的自舉顯示此列表中的行。通過在Visual Studio 2013中啓動一個新項目提供的css文件。任何想法如何讓它正確呈現?

+3

顯示呈現的HTML輸出也。它看起來像被渲染爲「多個」,而其中一個不是。奇。 – ethorn10

+3

刪除'size =「18px」'(它無效,正確的用法是'size =「18」'你想顯示18項,但由於你不想顯示任何項目,只需刪除它) –

+0

Stephen Muecke,這是我正在尋找的答案。我想我忽略了這個事實。你能否讓這個答案能夠讓我接受它? – gmalenko

回答

0

您創建無效的HTML,並不能保證瀏覽器(甚至版本相同的瀏覽器)如何將各種處理無效的HTML。

DropDownListFor()方法是添加一個size屬性,它期待一個整數值,以便size="18px"是無效的,這將需要是size="18"。但size屬性定義了在多選中顯示的項目數量,因此您不需要多選,只需刪除該屬性即可。你的代碼應該是

@Html.DropDownListFor(m => m.CountryID, new SelectList(Model.CountryList, "Value", "Text"), new { @class = "form-control" }) 

旁註:你new SelectList(Model.CountryList, "Value", "Text")代碼表明,CountryList已經IEnumerable<SelectListItem>。如果是這樣的話,它的無意義額外的開銷,從現有SelectList讓你的代碼中創建一個新的SelectList應該

@Html.DropDownListFor(m => m.CountryID, Model.CountryList, new { @class = "form-control" }) 
-1

你需要添加htmlAttributes來設置你的剃鬚刀班。因此,改變你的代碼:

@Html.DropDownListFor(model => model.CountryID, new SelectList(Model.CountryList, "Value", "Text"), htmlAttributes:new { @class = "form-control", size = "18px" }) 
+0

這正是OP已經做的! –