所以我创建使用MVC网站,我的DropDownLists和DropDownListFors看起来不一样的页面上的其他投入要素。 我试着设置他们的阶级是相同的“表单控制”,甚至试图加入我自己的类中有几乎相同的性能称为“mydropdown”和使用的CSS - 既没有效果。
所以我发现约瑟夫·伍德沃德回答了这个非常有用的线索 ,我只是试图....
我使用VB而不是C#,所以我不得不把它翻译。 这是我的翻译BootstrapHtml:
Public Class BootstrapHtml
Public Function Dropdown(id As String, selectListItems As List(Of SelectListItem), label As String) As MvcHtmlString
Dim button = New TagBuilder("button")
button.Attributes.Add("id", id)
button.Attributes.Add("type", "button")
button.Attributes.Add("data-toggle", "dropdown")
button.AddCssClass("btn")
button.AddCssClass("btn-default")
button.AddCssClass("dropdown-toggle")
button.SetInnerText(label)
button.InnerHtml += " " + BuildCaret()
Dim wrapper = New TagBuilder("div")
wrapper.AddCssClass("dropdown")
wrapper.InnerHtml += button.ToString
wrapper.InnerHtml += BuildDropdown(id, selectListItems)
Return New MvcHtmlString(wrapper.ToString)
End Function
Private Function BuildCaret() As String
Dim caret = New TagBuilder("span")
caret.AddCssClass("caret")
Return caret.ToString
End Function
Private Function BuildDropdown(id As String, items As IEnumerable(Of SelectListItem)) As String
Dim list = New TagBuilder("ul")
list.Attributes.Add("class", "dropdown-menu")
list.Attributes.Add("role", "menu")
list.Attributes.Add("aria-labelledby", id)
Dim listItem = New TagBuilder("li")
listItem.Attributes.Add("role", "presentation")
For Each x In items
list.InnerHtml += "<li role=\presentation\>" & BuildListRow(x) & "</li>"
Next
Return list.ToString
End Function
Private Function BuildListRow(item As SelectListItem) As String
Dim anchor = New TagBuilder("a")
anchor.Attributes.Add("role", "menuitem")
anchor.Attributes.Add("tabindex", "-1")
anchor.Attributes.Add("href", item.Value)
anchor.SetInnerText(item.Text)
Return anchor.ToString
End Function
End Class
有一两件事我不知道我有权利在For Each循环字符串连接....
在任何情况下,我认为我试着用
@ BootstrapHtml.Dropdown( “typecombo”,TYPELIST, “下拉”)
但它给了我一个代码错误:
参照本发明的非共享成员需要的对象引用。
所以我加在上面的代码段的声明:
昏暗newDropDown作为BootstrapHtml =新BootstrapHtml
和我的观点一致,现在看起来是这样的:
@newDropDown = BootstrapHtml.Dropdown( “typecombo”,类型串, “下拉”)
所以,现在我的网站没有任何错误运行,但是当我去这个页面,而不是一个下拉列表,我看到的字符串,它是这样的:
[myproject的] .BootstrapHtml = BootstrapHtml.Dropdown( “typecombo”,类型串, “下拉”)
所以,我想首先是班里字符串翻译正确的(如上所述)? 如果是,为什么我看到我的网页上的字符串,而不是实际的下拉?
谢谢!!