【发布时间】:2011-11-20 23:23:53
【问题描述】:
我正在使用我自己的自定义 HtmlHelper 来启用 AutoComplete support on a Select List。
这一切正常,但我需要能够支持我的 ViewModel 中的 DataAnnotations。
这是我当前(工作的)HtmlHelper(无验证)
<Extension()>
Public Function AutoCompleteDropDownList(ByVal helper As HtmlHelper, name As String, autoCompleteSelectListItem As List(Of AutoCompleteSelectListItem), htmlAttributes As Object) As MvcHtmlString
Dim selectBuilder As New TagBuilder("select")
selectBuilder.MergeAttribute("name", name)
selectBuilder.MergeAttributes(New RouteValueDictionary(htmlAttributes))
selectBuilder.MergeAttribute("autocorrect", "off")
selectBuilder.MergeAttribute("autocomplete", "off")
Dim selectListBuilder As New TagBuilder("option")
selectListBuilder.MergeAttribute("value", "")
selectListBuilder.MergeAttribute("selected", "selected")
Dim innerHtmlBuilder As New StringBuilder
innerHtmlBuilder.Append(selectListBuilder.ToString(TagRenderMode.Normal))
For Each item In autoCompleteSelectListItem
selectListBuilder = New TagBuilder("option")
selectListBuilder.MergeAttribute("value", item.Value)
selectListBuilder.MergeAttribute("data-alternative-spellings", item.AlternativeSpellings)
selectListBuilder.MergeAttribute("data-relevancy-booster", item.RelevancyBooster)
selectListBuilder.InnerHtml = item.Label
innerHtmlBuilder.Append(selectListBuilder.ToString(TagRenderMode.Normal))
Next
selectBuilder.InnerHtml = innerHtmlBuilder.ToString()
Return MvcHtmlString.Create(selectBuilder.ToString(TagRenderMode.Normal))
End Function
如何重写它以支持验证?类似AutoCompleteDropDownListFor()
PS:C# 解决方案完全可以接受,我正在做的项目是 VB,但我不介意翻译。
PS:我正在浏览http://aspnet.codeplex.com 上的源代码,但找不到对DropDownListFor 的任何引用
【问题讨论】:
标签: asp.net-mvc-3 validation html-helper