我一直试图让这个工作几个小时。我认为问题是使用枚举但我的老板坚持我们使用它。
webapp aspx代码:
<label for="footerPlaceHolder_twoFactorAuthentication" class="sr-only"><asp:Localize runat="server" Text="<%$ Resources:UserMessages, TwoFactorSelect %>"></asp:Localize></label>
<asp:DropDownList runat="server" ID="twoFactorAuthenticationDropDownList" CssClass="selectpicker">
<asp:ListItem Value="0" Text = "<%$ Resources:UserMessages, TwoFactorSelect %>"></asp:ListItem>
<asp:ListItem Value="3" Text = "<%$ Resources:UserMessages, TwoFactorRequire %>" ></asp:ListItem>
<asp:ListItem Value="2" Text = "<%$ Resources:UserMessages, TwoFactorRecommend %>" ></asp:ListItem>
<asp:ListItem Value="1" Text = "<%$ Resources:UserMessages, TwoFactorNotRequired %>" ></asp:ListItem>
</asp:DropDownList>
<p><asp:RequiredFieldValidator runat="server" ControlToValidate="twoFactorAuthenticationDropDownList" CssClass="field-validation-error" InitialValue="0" EnableClientScript="true" Display="Dynamic"></asp:RequiredFieldValidator></p>
webapp aspx.cs代码:
var data = Utility.OAWebServiceClient.GetFullSiteData(rowToEdit);
twoFactorAuthenticationDropDownList.SelectedValue = data.TwoFactorOption.ToString();
webservice IOAuth2.cs代码:
public enum WebSite2FactorOptionEnum
{
[EnumMember]
NotSelected,
[EnumMember]
NotRequired,
[EnumMember]
Recommended,
[EnumMember]
Required
}
答案 0 :(得分:3)
问题是您的下拉列表中的值为int
s,但您将SelectedValue
设置为字符串。
尝试:
twoFactorAuthenticationDropDownList.SelectedValue = ((int)data.TwoFactorOption).ToString();
希望它会有所帮助。
答案 1 :(得分:0)
您正在混淆drodown的VALUE和TEXT属性。你的代码在这里:
twoFactorAuthenticationDropDownList.SelectedValue = data.TwoFactorOption.ToString();
尝试将所选值设置为&#39; NotRequired&#39;。这不会起作用,因为你的下拉值是0,1,2等等。
沿着这些方向做的事情会更好:
twoFactorAuthenticationDropDownList.SelectedValue = ((int)data.TwoFactorOption).ToString();
此外,您应明确定义枚举成员的数值,否则如果您更改枚举中的项目顺序,则可能会产生无意的后果。
public enum WebSite2FactorOptionEnum
{
[EnumMember]
NotSelected = 0,
[EnumMember]
NotRequired = 1,
[EnumMember]
Recommended = 2,
[EnumMember]
Required = 3
}
最后,由于您使用的是EnumMember属性,我假设您正在序列化此枚举。依赖数据协定序列化枚举的整数值可能会产生意外结果。