2010-02-01 8 views

risposta

25

Preferisco "1/0", perché non rientra nei requisiti di localizzazione.

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

Comune b parole chiave oolea come "true" o "false" non sono nemmeno soggette a i18n. – dakab

1

Non importa, ad essere onesti. Non ho mai usato un bool in una stringa di query, ma probabilmente opterei per il '1'.

+0

+1, I usa 1 anche se devo passare un booleano via querystring, ma c'è un certo programmatore qui che ama mascherare i suoi booleani con l'offuscamento, quindi il risultato è "74727565" e "66616C7365":/ – kd7

+1

Oltre agli altri difetti evidenti in quel metodo, sono sicuro che qualsiasi hacker noterebbe due valori fissi che rappresentano vero o falso :) Chi lo sa, quel programmatore potrebbe leggere questa pagina ..... – keyboardP

+0

Spero che lo sia :) – kd7

1

finché si convalida il proprio input dovrebbe essere meno importante. entrambi possono essere analizzati in un valore booleano.

tenere presente che il parametro querystring potrebbe facilmente essere modificato da qualcun altro nel proprio browser.

2

La maggior parte dei siti di utilizzare true/false sulle loro stringhe di query, in modo da non dover passare da 0/1 di nuovo al boolean nel codice dietro (if o qualcosa del genere). Il numero è usato di più per gli ID.

1

"true" o "false" è più leggibile. 1 o 0 salva carattere nel tuo URL. Io preferisco 0 o 1. Per la conversione che uso Metodi di estensione:

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

    bool yesnot = Page.Request.GetBoolVal("yesno"); 

(pseudo codice, non testato)

2

Non è necessario utilizzare sia. Un parametro stringa di query non deve avere un valore. Si potrebbe semplicemente avere un URI come questo: http://someserver.com/somepage.aspx?SortById=&day=Monday

e poi nel codice:

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

hmm, mi chiedo se qualcosa cambi per il framework se questo dovesse mai rompersi però. – PositiveGuy

+0

Cosa succede se si invia un modulo con una casella di controllo? Indipendentemente dal fatto che sia selezionato o meno, un parametro verrà comunque aggiunto alla stringa di query per esso. –

0

Usa "0" o "1" di sicuro! puoi sia impostare che recuperare questi valori booleani in modo molto più pulito in Javascript forzando il tipo con l'operatore "+", ad es.

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 

non c'è modo per convertire una stringa di "vero" o "falso" direttamente a un valore booleano "vero" o "falso" quindi penso che quanto sopra apprach è molto meglio

Problemi correlati