为bool设置查询字符串参数时是否有人使用“true”或“false”?或大多数人使用“1”或“0”。我很想知道那里的共识。
答案 0 :(得分:28)
我更喜欢“1/0”,因为它不符合本地化要求。
bool isTrue = Request.QueryString["value"] == "1";
答案 1 :(得分:3)
您不必使用其中任何一种。查询字符串参数不必具有值。你可能只有这样的uri:http://someserver.com/somepage.aspx?SortById=&day=Monday
然后在你的代码中:
if(Request.QueryString.AllKeys.Contains("SortById")) ...
答案 2 :(得分:2)
大多数网站在查询字符串上使用true / false,因此您不必在代码后面从0/1切换回布尔值(if语句或其他内容)。号码更多地用于ID。
答案 3 :(得分:1)
说实话,这并不重要。我从来没有在查询字符串中使用bool,但我可能会选择'1'。
答案 4 :(得分:1)
只要您验证输入,它就不那么重要了。两者都可以解析为布尔值。
请记住,querystring参数可以很容易地从浏览器中的其他人改变。
答案 5 :(得分:1)
“true”或“false”更具可读性。 1或0可保存URL中的字符。我更喜欢0或1.对于转换,我使用扩展方法:
public static bool GetBoolVal(this HttpRequest r, string name)
{
return r[name] == "1";
}
bool yesnot = Page.Request.GetBoolVal("yesno");
(伪代码,未经测试)
答案 6 :(得分:0)
使用" 0"或" 1"当然!您可以通过类型强制使用" +"以更清晰的方式在Javascript中设置和检索这些布尔值。运营商,例如
var boolVal = true;
// this sends user to 'https://www.google.com?bool=1' (uses ES6 template strings)
window.location = `https://www.google.com?bool=${+boolVal}`;
var query = queryParsingFunctionProbablyIncludedInYourFramework(window.location.search)
// the below will yield the boolean "true" and "false",
// without the "!!" this would evaluate to a numerical zero or 1
// which would still evaluate as false and true respectively in a
// boolean expression as you'd want
!!+query.bool // evaluates to true in this case
无法转换字符串" true"或"假"直接到布尔值" true"或"假"所以我觉得上面的评价要好得多
答案 7 :(得分:0)
值得一提的是,使用ASP.NET Core并通过[FromQuery]进行绑定时,您不得不使用布尔值作为参数。
[HttpGet("/api/foo")]
public Task<NoContentResult> FooAction([FromQuery(Name = "bar")] bool isBar) { /*...*/ }
这将起作用:
GET /api/foo?bar=true
传递整数将导致ASP.NET Core的ModelBinder返回无效的ModelState
GET /api/foo?bar=1