我的代码中有以下枚举器:
Public Enum UserSearchFields
LastName
FirstName
Email
UniqueID
End Enum
我尝试使用此枚举器中的值填充视图中的下拉列表:
<select id="search_type">
<option value="@UserSearchFields.LastName" selected="selected">Last Name</option>
<option value="@UserSearchFields.FirstName">First Name</option>
<option value="@UserSearchFields.Email">E-mail</option>
<option value="@UserSearchFields.UniqueID">Unique ID</option>
</select>
但由于某些原因,当呈现页面时,value字段包含枚举数的字符串表示而不是基础整数值。例如,选项值字段将是“LastName”而不是“0”......为什么会出现这种情况,我是否犯了某种错误?
P.S。我知道我可以从枚举器中填充下拉列表,例如How do you create a dropdownlist from an enum in ASP.NET MVC?,但我只是想知道为什么会出现这个问题?
答案 0 :(得分:3)
我认为你需要将枚举设置为这样的数字:
Public Enum UserSearchFields
LastName = 0
FirstName = 1
Email = 2
UniqueID = 3
End Enum
即使这是一个不必要的步骤,你需要在写出来时将它强制转换为int:
<select id="search_type" style="width: 100%;">
<option value="@((int)SOLEPortal.UserSearchFields.LastName)" selected="selected">Last Name</option>
<option value="@(((int)SOLEPortal.UserSearchFields.FirstName)">First Name</option>
<option value="@((int)SOLEPortal.UserSearchFields.Email)">E-mail</option>
<option value="@((int)SOLEPortal.UserSearchFields.UniqueID)">Unique ID</option>
</select>
更好的方法是创建一个自动从枚举中写出下拉列表的扩展方法,但这是一个很好的起点。