对布尔查询字符串参数使用“true”或“1”

时间:2010-02-01 16:11:10

标签: asp.net

为bool设置查询字符串参数时是否有人使用“true”或“false”?或大多数人使用“1”或“0”。我很想知道那里的共识。

8 个答案:

答案 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