asp.net

asp.net - Use "verdadero" o "1" para los parámetros de cadena de consulta booleanos



(8)

"verdadero" o "falso" es más legible. 1 o 0 guarda el carácter en su URL. Prefiero 0 o 1. Para convertir uso métodos de extensión:

public static bool GetBoolVal(this HttpRequest r, string name) { return r[name] == "1"; } bool yesnot = Page.Request.GetBoolVal("yesno");

(pseudo código, no probado)

¿Alguien usa "verdadero" o "falso" cuando configura un parámetro de cadena de consulta para un bool? o la mayoría de la gente usa "1" o "0". Me gustaría saber el consenso que hay.


La mayoría de los sitios utilizan verdadero / falso en sus cadenas de consulta, por lo que no tendrá que cambiar de 0/1 a booleano en su código detrás (si es una declaración o algo así). El número se usa más para las identificaciones.


Mientras valide su entrada, debería ser menos importante. ambos podrían ser analizados en un valor booleano.

tenga en cuenta que el parámetro de la cadena de consulta podría cambiarse fácilmente de otra persona en su navegador.


No tienes que usar tampoco. Un parámetro de cadena de consulta no tiene que tener un valor. Podría tener un uri como este: http://someserver.com/somepage.aspx?SortById=&day=Monday

y luego en su código:

if(Request.QueryString.AllKeys.Contains("SortById")) ...


Prefiero "1/0", ya que no cumple con los requisitos de localización.

bool isTrue = Request.QueryString["value"] == "1";


Puede que valga la pena mencionar que al usar ASP.NET Core y el enlace a través de [FromQuery] , se ve obligado a usar valores booleanos como argumentos.

[HttpGet("/api/foo")] public Task<NoContentResult> FooAction([FromQuery(Name = "bar")] bool isBar) { /*...*/ }

Esto funcionará:

GET /api/foo?bar=true

Pasar un entero dará como resultado un ModelState no ModelState devuelto por el ModelState de ASP.NET Core

GET /api/foo?bar=1


Realmente no importa, para ser honesto. Nunca he usado un bool en una cadena de consulta, pero probablemente optaría por el ''1''.


Utilice "0" o "1" seguro! puede configurar y recuperar estos valores booleanos de una forma mucho más limpia en Javascript mediante el uso de la fuerza con el operador "+", por ejemplo

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

no hay manera de convertir una cadena de "verdadero" o "falso" directamente a un "booleano" verdadero o falso, por lo que creo que el enfoque anterior es mucho mejor