我的条件需要在一侧使用字符串并在另一侧使用小数进行验证。但是,如果第二个条件为null,则返回true,输入并显示my is required消息。
context.Customer.Where(customer =>
stringProperties.Any(prop =>
prop.GetValue(customer, null) == query));
但是我正在考虑改变第二个条件
if (!equipObject[i].Mass[0].massId && !equipObject[i].Mass[0].Price ) {
// display message - either massId or Price are required!
}
代表
!equipObject[i].Mass[0].Price
这两种验证有何不同?哪一个是最佳的?根据BL,0不是有效价格。
答案 0 :(得分:0)
如果equipObject[i].Mass[0].Price
为0
:
!0 // is true
!$.isNumeric(0) // is false
答案 1 :(得分:0)
好的,CRec,
在这种情况下!equipObject[i].Mass[0].Price
您正在测试该对象(如果它们存在且具有值)。
在这种情况下!$.isNumeric(equipObject[i].Mass[0].Price.
,您正在测试该值是否为数字值。
如果您需要确认价格始终为数字,则第二个是最好的,保证您在变量中的价格高于0。
答案 2 :(得分:-2)
他们非常不同,基本上完全不同的事情
!equipObject[i].Mass[0].Price
在这里,您将“值”和coerced取为真/假值,然后应用“不”。因此,如果我们将equipObject[i].Mass[0].Price
替换为实际值,您会得到以下结果:
!0 //true
!1 //false
!2 //false
!0.00 //true
!1.8884441 //false
!"1.8884441" //false
!"one" //false
!true //false
!false //true
!null //true
等。所以这不是很安全的。
!$.isNumeric(equipObject[i].Mass[0].Price)
这利用jQuery's isNumeric function。
$.isNumeric()
方法检查其参数是否代表a 数值。如果是,则返回true
。否则返回false
。该 参数可以是任何类型。
让我们这样做:
!$.isNumeric(0) //false
!$.isNumeric(1) //false
!$.isNumeric(2) //false
!$.isNumeric(0.00) //false
!$.isNumeric(1.8884441) //false
!$.isNumeric("1.8884441") //false
!$.isNumeric("one") //true
!$.isNumeric(true) //true
!$.isNumeric(false) //true
!$.isNumeric(null) //true
结果非常不同。
哪一个是最佳的?
这取决于您对最优的定义。我假设您确实想检查某个东西是否为整数且大于零,在这种情况下我认为您需要第三种方式:
!$.isNumeric(equipObject[i].Mass[0].Price) && equipObject[i].Mass[0].Price !== 0
注意!==
。 This prevents coercion