ASP.Net复选框返回"Yes"或"No"值(而不是True/False)

4

我正在使用C#和ASP.Net 3.5,想要从复选框中获取"Yes" / "No"值,而不是True / False。是否有简单的方法,还是需要使用"if"语句?


我很好奇你为什么要这样做?使用布尔值比使用表示相同内容的字符串要简单得多。 - Doug Stalter
复选框的值将在“打印此页面”中显示,客户希望看到“是/否”,而不是“真/假”。 - user279521
客户喜欢拥有“我掌控一切”的感觉。 - Luiscencio
我假设您没有将此数据持久化存储在除网页之外的任何其他地方,因此您是基于控件值而不是包含数据的其他对象来呈现“打印此页面”。 - Doug Stalter
@DougStalter:没错,这只是从数据库中简单检索数据,用户进行修改后,打印出页面;不保存到数据库; - user279521
@Luiscencio:我只是按照指示去做 :-) - user279521
8个回答

10

可以尝试这样做:

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

更多信息...


1
完美的解决方案。谢谢Luiscencio。 - user279521

5
如何为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

2

您可以使用三元运算符来模拟所需的行为。

例如:

string answer = checkbox.Checked ? "是" : "否";

这样做非常完美。

如果出于某种原因,您想直接从复选框获取实际的“是”/“否”(我完全看不出这样做的理由),那么您可以对组件进行子类化,并将其替换为字符串而不是 true/false。不过这似乎有点傻,因为“是”/“否”实际上是一种人性化的表达方式。对我来说,以这种方式推导它也更容易维护代码,这也是相当标准的做法。


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

0
你可以使用 条件操作符
checkbox.Checked ? "Yes" : "No"

如果你想要更聪明,你可以使用字典:

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

BooleanNames[checkbox.Checked]

然而,你真的不应该这样做。


0
只是为了给你一个没有if语句的替代方案(可能不是在这种情况下最好的方法,但...):
Dictionary<Boolean, String> strings = new Dictionary<Boolean, String>();
strings.Add(true, "Yes");
strings.Add(false, "No");

然后当你需要这个值时:

String yesNo = strings[checkbox.Checked];

0

我猜你正在使用一个asp.net复选框控件,并查看“Checked”属性。如果是这样,你需要一条语句将布尔值转换为是/否:

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

0

字符串 doesThisWork = (bool)chkBox.Checked ? "是的" : "不是"


虽然这段代码可能解决了问题,但包括解释它如何解决问题的说明会真正帮助提高您的帖子质量,并可能导致更多的点赞。请记住,您回答的是为将来的读者而非仅仅是提问者的问题。请[编辑]您的答案以添加解释并指明应用的限制和假设条件。 - Yunnosch

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接