gpt4 book ai didi

asp.net-mvc - Html.DropDownListFor 不按预期行为 ASP.net MVC

转载 作者:行者123 更新时间:2023-12-04 06:51:34 25 4
gpt4 key购买 nike

我是 ASP.net MVC 的新手,我无法让下拉列表正常工作。

我有一个试图使用 Html.DropDownListFor 的强类型 View ,如下所示:

<%=Html.DropDownListFor(Function(model) model.Arrdep, Model.ArrdepOptions)%>

我正在使用模型中的属性填充列表,如下所示:
Public ReadOnly Property ArrdepOptions() As List(Of SelectListItem)
Get
Dim list As New List(Of SelectListItem)
Dim arriveListItem As New SelectListItem()
Dim departListItem As New SelectListItem()
arriveListItem.Text = "Arrive At"
arriveListItem.Value = ArriveDepart.Arrive
departListItem.Text = "Depart At"
departListItem.Value = ArriveDepart.Depart
Select Case Me.Arrdep
Case ArriveDepart.Arrive : arriveListItem.Selected = True
Case Else : departListItem.Selected = True
End Select
list.Add(departListItem)
list.Add(arriveListItem)
Return list
End Get
End Property

Select Case 可以找到并将正确的 SelectListItem 设置为 Selected,但是当我的 View 呈现下拉列表时,无论什么标记为选中,生成的 HTML 都没有选择任何内容。

我显然做错了什么或遗漏了什么,但我一生都无法弄清楚是什么。

最佳答案

结果我不得不写一个下拉列表助手。我找到了文章 here .这是我的代码,以防其他人需要它。从文章中的C#例子大致翻译成VB。

Imports System.Linq.Expressions
Imports System.Runtime.CompilerServices

Namespace Helpers

Public Module HtmlDropDownExtensions

<Extension()> _
Public Function EnumDropDownList(Of TEnum)(ByVal htmlHelper As HtmlHelper, ByVal name As String, ByVal selectedValue As TEnum) As MvcHtmlString

Dim values As IEnumerable(Of TEnum) = [Enum].GetValues(GetType(TEnum))

Dim list As New List(Of SelectListItem)
For Each value As TEnum In values
Dim selectListItem As New SelectListItem()
selectListItem.Text = value.ToString()
selectListItem.Value = value.ToString()
selectListItem.Selected = (value.Equals(selectedValue))
list.Add(selectListItem)
Next
Dim items As IEnumerable(Of SelectListItem) = list

Return htmlHelper.DropDownList(name, items)

End Function

<Extension()> _
Public Function EnumDropDownListFor(Of TModel, TEnum)(ByVal htmlHelper As HtmlHelper(Of TModel), ByVal expression As Expression(Of Func(Of TModel, TEnum))) As MvcHtmlString

Dim metadata As ModelMetadata = ModelMetadata.FromLambdaExpression(expression, htmlHelper.ViewData)

Dim values As IEnumerable(Of TEnum) = [Enum].GetValues(GetType(TEnum))

Dim list As New List(Of SelectListItem)
For Each value As TEnum In values
Dim selectListItem As New SelectListItem()
selectListItem.Text = value.ToString()
selectListItem.Value = value.ToString()
selectListItem.Selected = (value.Equals(metadata.Model))
list.Add(selectListItem)
Next
Dim items As IEnumerable(Of SelectListItem) = list

Return htmlHelper.DropDownListFor(expression, items)

End Function

End Module

End Namespace

关于asp.net-mvc - Html.DropDownListFor 不按预期行为 ASP.net MVC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3046811/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com