将单选按钮值转换为bool

时间:2013-01-04 08:37:53

标签: asp.net

我试图将选中的单选按钮的值转换为“out”变量,然后将其作为true或false传递。

但它总是返回假我已经尝试了很多不同的方式,这就是我。

if (rad_Security_Risk.SelectedItem.Value == "NO")
{
    if (bool.TryParse(rad_Security_Risk.SelectedValue, out risk))
    {
        risk = false;
        obj.Security_Risk = risk;
    }
}

if (rad_Security_Risk.SelectedItem.Value == "YES")
{
    if (bool.TryParse(rad_Security_Risk.SelectedValue, out risk))
    {
        risk = true;
        obj.Security_Risk = risk;
    }
}

当我选择YES时,它总是假的?

4 个答案:

答案 0 :(得分:1)

如果你只想拥有两个值,应该有'true'和'false',这就足够了。如果你有更多的值或更多的类型,你可以使用byte或int ....你应该使用if ... else ...或switch ... case ...

 <asp:RadioButtonList ID="rblList" runat="server">
        <asp:ListItem Text="True" Value="True" Selected="True"></asp:ListItem>
        <asp:ListItem Text="False" Value="False"></asp:ListItem>
 </asp:RadioButtonList>

 var a = Convert.ToBoolean(rblList.SelectedValue);

var a = Convert.ToInt16(rblList.SelectedValue);
var retValue = string.Empty;
switch (a)
{
    case 0:
        //"you want have"
        break;
    case 1:
        //"you want have"
        break;
    case 2:
        //"you want have"
        break;
    default:
        //"you want have"
        break;
}

    if (a == 0)
    {
        //"you want have"
    }
    else if (a == 1)
    {
        //"you want have"
    }
    else if (a == 2)
    {
        //"you want have"
    }
    else
    {
        //"you want have"
    }

答案 1 :(得分:0)

你的代码没有任何意义 - 它执行了大量的冗余分配。此外,Boolean.TryParse无法解析&#34; YES&#34;和&#34;否&#34;到truefalseexamples in the documentation表明这一点并没有做到这一点。它只会解析与Boolean.TrueStringBoolean.FalseString

对应的字符串

可以大大简化:

if (rad_Security_Risk.SelectedItem.Value == "NO")
{
    obj.Security_Risk = false;
}
else if (rad_Security_Risk.SelectedItem.Value == "YES")
{
    obj.Security_Risk = true;
}
else 
{
    // Is there a possibility that the value can be something
    // other than YES or NO?
    throw new Exception ("Undefined behaviour!");
}

答案 2 :(得分:0)

<asp:RadioButtonList ID="rblTest"  runat="server" RepeatDirection="Horizontal"  >
                <asp:ListItem Value="0">
                    No
                </asp:ListItem>
                <asp:ListItem Value="1">
                    Yes
                </asp:ListItem>
</asp:RadioButtonList>

然后你可以使用你的代码bool.TryParse并使用SelectedItem.Text检查你的项目

答案 3 :(得分:0)

您无法将"YES"解析为true"NO"false正如Habib指出您必须使用

布尔True,true

true     解析

时,False,false为布尔false

请改用此代码

        if (rad_Security_Risk.SelectedItem.Value == "NO")
        {
            if (bool.TryParse("False", out risk))
            {
                risk = false;
                obj.Security_Risk = risk;
            }
        }

        if (rad_Security_Risk.SelectedItem.Value == "YES")
        {
            if (bool.TryParse("True", out risk))
            {
                risk = true;
                obj.Security_Risk = risk;
            }
        }