4 Stimmen

ASP.NET MVC Null in eine Zeichenfolge mit null Länge umwandeln

Ich verwende MVC 3 und versuche, leere Felder als Zeichenfolgen der Länge Null an die Datenbank zu senden, anstatt Nullen. Ist dies mit Datenannotationsattributen möglich?

Wenn nicht, wo ist der geeignetste Ort, um von Nullen umzuwandeln? Während der Modellvalidierung?

12voto

Kyle Robson Punkte 3050

Auch wenn es nicht ideal ist, ist dies der beste Weg, den ich kenne: [DisplayFormat(ConvertEmptyStringToNull = false)] über der Eigenschaft. Es hält die Logik im Modell, was eine gute Praxis ist, und es geht direkt auf das Problem ein. Es ist einfach schade, dass dies notwendig ist.

private string _summary = "";
[Required]
[DisplayFormat(ConvertEmptyStringToNull = false)]
public virtual string Zusammenfassung
{
    get { return _summary; }
    set { _summary = value; }
}

0voto

James Nail Punkte 1521

Ich würde das nicht in einem Validator machen, sondern wahrscheinlich stattdessen im Model Binding (oder sogar im Model selbst).

Oft setze ich in meinen Model-Klassen meine String-Eigenschaften standardmäßig auf einen leeren String und in ihren Settern konvertiere ich Nullwerte in leere Strings um.

Es ist ein bisschen mühsam, diesen wiederholten Code immer wieder zu schreiben, aber es ist viel angenehmer, sich nicht mit Nullwerten befassen zu müssen.

0voto

smartcaveman Punkte 39448

Setze die Eigenschaft im Konstruktor auf string.empty.

Oder, obwohl das etwas teurer ist, könntest du eine Erweiterungsmethode erstellen, die folgendes tut und sie einfach im Konstruktor aufrufen:

 var stringPropertyInfos = GetType()
                  .GetProperties(BindingFlags.Instance|BindingFlags.Public)
                  .Where(p => p.PropertyType == typeof(string));
 foreach(var propertyInfo in stringPropertyInfos){
     propertyInfo.SetValue(this,string.Empty,null);
 }

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X