【问题标题】:ASP.Net checkbox to return a "Yes" or "No" value (instead of True / False)ASP.Net 复选框返回“是”或“否”值(而不是 True / False)
【发布时间】:2021-02-12 04:16:14
【问题描述】:

我正在使用 C# 和 ASP.Net 3.5,并尝试从复选框中获取“是”/“否”值,而不是 True/False。有没有简单的方法或者我需要做“if”语句?

【问题讨论】:

  • 我很好奇你为什么要这样做?使用布尔值比使用表示相同事物的字符串要容易得多。
  • 复选框的值显示在“打印此页”中,客户希望看到“是/否”而不是“真/假”
  • 客户喜欢那种“我在控制中”的感觉
  • 我假设您没有将这些数据保存在网页以外的任何其他地方,因此您正在根据控件值而不是包含数据的其他对象呈现“打印此页面” .
  • @DougStalter:正确,这是从数据库中检索的简单数据,用户进行修改,打印出页面;不保存到数据库;

标签: c# asp.net-3.5


【解决方案1】:

一定要试试这个:

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

more info...

【讨论】:

  • 完美解决方案。谢谢 Luiscencio
【解决方案2】:

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

【讨论】:

    【解决方案3】:
    string YesNo = chkYesNo.Checked ? "Yes" : "No";
    

    【讨论】:

      【解决方案4】:

      您可以使用三元语句来模拟您想要的行为。

      有点像

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

      你会很完美的。

      如果出于某种原因您想直接从复选框中获取实际的是/否(我根本看不出这是什么原因),那么您可以对组件进行子类化,而不是 true/false 让它接受字符串。这样做似乎有点傻,尽管“是”/“否”实际上是一种人性化,但对我来说,以这种方式派生它的代码也更少,这是相当标准的。

      【讨论】:

        【解决方案5】:

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

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

        【讨论】:

          【解决方案6】:

          您可以使用conditional operator:

          checkbox.Checked ? "Yes" : "No"
          

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

          static readonly Dictionary<bool, string> BooleanNames = new Dictionary<bool, string> { 
              { true,  "Yes" },
              { false, "No"  }
          };
          
          BooleanNames[checkbox.Checked]
          

          但是,你真的不应该。

          【讨论】:

            【解决方案7】:

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

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

            那么当你需要值时:

            String yesNo = strings[checkbox.Checked];
            

            【讨论】:

              【解决方案8】:

              string doesThisWork = (bool)chkBox.Checked ? “是”:“否”

              【讨论】:

              • 虽然此代码可能会解决问题,including an explanation 关于如何以及为什么解决问题将真正有助于提高您的帖子质量,并可能导致更多的赞成票。请记住,您正在为将来的读者回答问题,而不仅仅是现在提问的人。请edit您的回答添加解释并说明适用的限制和假设。
              猜你喜欢
              • 2012-03-27
              • 2020-08-20
              • 2017-09-24
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2020-11-28
              • 2023-03-15
              • 2016-03-23
              相关资源
              最近更新 更多