【问题标题】:Updated: Setting bool default value to true更新:将 bool 默认值设置为 true
【发布时间】:2017-06-06 15:41:48
【问题描述】:

我需要找到一种方法将 ischecked 的默认值设置为 true,我将它作为参数传递,但我并不总是设置它。

ischecked 是在我的配置文件中定义的,我有多个配置,有些是定义的,有些不是。我不会解释为什么我使用不同的配置。如果未定义,则默认为 false,但我需要它为 true。

function showSaveCardControl(ischecked) { 
    $(".saveCardControl").slideDown().find("input").prop("checked", ischecked); 
}

如果尚未定义,我基本上需要选中复选框,但由于默认值为 false,因此未选中。

更新:

我正在将一个 xml 元素传递给一个 c# 属性。 xml 将是我设置 ischecked 值的位置,但由于我没有在 xml 中的某个位置设置它,或者一旦它被转换为 c# 属性,它就被设置为 false。我猜它是在属性尝试调用该 xml 值时设置的。

我尝试使用属性设置默认值。

[XmlElement("EasyPaySaveCardControlChecked")]
[DefaultValue(true)]
public bool ischecked { get; set; }

我已经尝试使用构造函数来设置它。

public className()
{
    ischecked = true;
}

我也尝试将所有布尔值设为空,但该值仍设置为 false

这些解决方案都不起作用,我不知道为什么。无论我做什么,该属性都设置为 false,如果将其设置为 undefined 就可以了,但是 bools 必须默认为 false

【问题讨论】:

  • if (ischecked === undefined) ischecked = true;?
  • 你最好在从配置中读取它的时候默认它,而不是在你的代码的其余部分添加默认值。
  • @Jamiec 我刚刚更新了我的问题,我尝试在调用 xml 配置后立即将其默认,但它似乎不起作用
  • bools have to defaulted to false - nullable bool -> public bool? ischecked
  • @Jamiec 我也试过了,抱歉我没有添加它。即使我将其设置为可为空的布尔值,它仍被设置为 false

标签: c# jquery xml


【解决方案1】:

试试这样的:

function showSaveCardControl(ischecked) { 
    if ('undefined' === typeof ischecked) ischecked = true;
    $(".saveCardControl").slideDown().find("input").prop("checked", ischecked);
}

【讨论】:

  • 你可以只做if(ischecked === undefined),不再需要做typeof了。
  • 问题是检查没有被传递为未定义它没有被传递为假,这是我遇到的主要问题
【解决方案2】:

这应该可以解决问题:

function showSaveCardControl(ischecked) { 
    if(typeof ischecked == 'undefined') 
       ischecked = true;

    $(".saveCardControl").slideDown().find("input").prop("checked", ischecked); 
}

【讨论】:

  • 问题是检查没有被传递为未定义它没有被传递为假,这是我遇到的主要问题
【解决方案3】:

假设属性是类的一部分,那么只需在类构造函数中将其默认值设置为 true,如果您有逻辑从配置中设置值,它将被覆盖。

public class LukesClass
{
 public String whatever {get;set;}
 public bool isChecked {get;set;}

 public LukesClass()
 {
  isChecked = true;
 }
}

【讨论】:

  • 该属性正在通过大量对象传递,如果已设置,我是否必须将其添加到它首先传递到的构造函数中,或者我可以将其添加到任何对象中吗?
  • 我已将其添加到正在序列化 xml 的对象构造函数中(更新问题),但仍然无法正常工作
【解决方案4】:

尝试使用自动属性初始化器(C# 6.0 及更高版本):

public bool isRequired { get; set; } = true;

我有一个案例,我需要一个未指定的 xml bool 来导入为 true 而不是 false。当标签指定为 true 或它们不存在时,上面的代码将导致 isRequired 为 true。只有标签定义为 false 时才会为 false。

【讨论】:

    猜你喜欢
    • 2021-03-17
    • 1970-01-01
    • 2015-01-08
    • 2016-04-25
    • 2011-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-04
    相关资源
    最近更新 更多