ASP.Net复选框返回“是”或“否”值(而不是真/假)

ASP.Net复选框返回“是”或“否”值(而不是真/假)

问题描述:

我使用C#和ASP.Net 3.5,并试图从复选框中获得“是”/“否”值,而不是真/假。有一种简单的方法,还是我需要做“if”语句?ASP.Net复选框返回“是”或“否”值(而不是真/假)

+0

我很好奇你为什么想这样做?使用布尔值处理比使用表示相同事物的字符串要容易得多。 – 2010-03-12 19:52:54

+0

复选框的值显示在“打印此页”中,客户希望看到“是/否”而不是“真/假” – user279521 2010-03-12 19:54:32

+0

客户喜欢“我在控制中”感觉 – Luiscencio 2010-03-12 20:03:19

确保试试这个:

string doesThisWork = chkBox.Checked ? "Yes":"No" 

more info...

+1

完美的解决方案。谢谢Luiscencio – user279521 2010-03-12 20:00:06

+1

不客气Mr.Dude 279521 – Luiscencio 2010-03-12 20:02:15

可以使用conditional operator

checkbox.Checked ? "Yes" : "No" 

如果你要聪明一点,你可以使用字典:

static readonly Dictionary<bool, string> BooleanNames = new Dictionary<bool, string> { 
    { true, "Yes" }, 
    { false, "No" } 
}; 

BooleanNames[checkbox.Checked] 

但是,你真的不应该。

string YesNo = chkYesNo.Checked ? "Yes" : "No"; 

我相信你正在使用一个asp.net复选框控制来看,在 '选中' 属性。如果是这样,您需要声明将布尔值转换为是/否:

string yesNo = checkbox_control.Checked ? "Yes" : "No"; 

您可以使用三态语句来模拟所需的行为。

喜欢的东西

string answer = checkbox.Checked ? "Yes" : "No";

会做你莫属。

如果由于某种原因,您希望从复选框中获得实际的Yes/No direct(并且我完全没有理由这么做),那么您可以对组件进行子类化,而不是真/假使用字符串。似乎有点愚蠢做到这一点,虽然有效的“是”/“否”是一种人性化,因为我也没有更多的代码来维护这种方式,这是非常标准的。

只给你一个没有if语句替代(可能不是在这种情况下,最好的办法,但...):

Dictionary<Boolean, String> strings = new Dictionary<Boolean, String>(); 
strings.Add(true, "Yes"); 
strings.Add(false, "No"); 

然后,当你需要的值:

String yesNo = strings[checkbox.Checked]; 

如何添加一个扩展方法CheckBox类此:

public static class CheckBoxExtensions 
{ 
    public static string IsChecked(this CheckBox checkBox) 
    { 
     return checkBox.Checked ? "Yes" : "No"; 
    } 
} 

用法:

var checkBox = new CheckBox(); 
checkBox.Checked = true; 

Console.WriteLine(checkBox.IsChecked()); 
// Outputs: Yes 
+0

喜欢使用扩展方法来解决这个问题。 – 2010-03-12 20:35:43

+0

不错=] 7654321 – Luiscencio 2010-03-12 22:12:21