asp.net-mvc asp - Come impostare il valore predefinito della stringa vuota TextBox anziché null




textareafor editor (5)

Per essere onesti, direi che la tua metodologia di codifica è obsoleta e imperfetta. Dovresti gestire tutte le possibilità, non è difficile. Questo è esattamente ciò che string.IsNullOrEmpty(value); è per.

Immagino che la tua logica di validazione sia qualcosa del tipo:

if (value == string.Empty) { isValid = false; } 

Quindi non gestisce i valori nulli. È necessario sostituire tale controllo in modo da verificare anche i valori nulli.

string value1 = null;
string value2 = string.Empty;

string.IsNullOrEmpty(value1); // true
string.IsNullOrEmpty(value2); // true

Potrei non essere aggiornato, ma un principio a cui aderisco è di evitare il più possibile il più possibile.

Tuttavia, ciò che ho trovato è che per una vista fortemente tipizzata in cui l'utente immette le proprietà di un oggetto che voglio salvare, se alcuni campi non vengono immessi vengono assegnati come null.

Quindi quando si tenta di salvare le modifiche, la convalida non riesce.

Quindi, piuttosto che impostare ogni proprietà su una stringa vuota, come posso impostare automaticamente ogni TextBox su un modulo come predefinito su una stringa vuota anziché su null?



È possibile inserire il seguente attributo nelle proprietà della stringa nel modello:

[DisplayFormat(ConvertEmptyStringToNull=false)]

Quindi, ogni volta che qualcuno pubblica un modulo con campi di testo vuoti, questi saranno una stringa vuota invece di null ...


Ho incontrato questo problema quando ho a che fare con un vecchio servizio che richiede stringhe vuote. Ho creato un metodo di estensione:

public static string GetValueOrDefault(this string str)
        {
            return str ?? String.Empty;
        }

Quindi puoi usare questo quando vuoi assicurarti che tutte le stringhe nulle diventino vuote

yourString1.GetValueOrDefault();
yourString2.GetValueOrDefault();

Certo, decora le tue azioni o l'intera classe con [Authorize] e richiede che l'utente abbia effettuato l'accesso per primo.





asp.net-mvc model textbox null default-value