asp:dropdownlist不保存用户选择的值c#asp.net aspx

时间:2016-05-06 13:57:26

标签: c# asp.net enums

我一直试图让这个工作几个小时。我认为问题是使用枚举但我的老板坚持我们使用它。

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
}

2 个答案:

答案 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属性,我假设您正在序列化此枚举。依赖数据协定序列化枚举的整数值可能会产生意外结果。