2017-11-28 1 views
0

Ich habe eine einfache Ansicht, in der ich einen HTML-Helper verwenden, um eine Texteingabe zu generieren:Wie zeige ich ein leeres Textfeld an, wenn der Wert gleich Null ist?

@Html.TextBox("Something",Model.myObject.myValue) 

myValue ist ein Schwimmer.

Wenn myValue==0, möchte ich 0 nicht anzeigen. Ist es möglich und wie?

Danke!

+1

Wenn '0' die Abwesenheit von einem Wert darstellt, könnten Sie eine nullable betrachten mit ' int? 'stattdessen. – grek40

+0

Nein, der Wert wird mit 0 initialisiert, aber ich möchte keine "0" in der Texteingabe haben, wenn das Formular als leeres Formular angezeigt wird. –

Antwort

5

Sie könnten nur eine einfache Inline-bedingten verwenden, wenn Sie den Wert einstellen:

@Html.TextBox("Something", Model.myObject.myValue == 0 ? "" : Model.myObject.myValue.ToString()) 

Umgekehrt könnte es sauberer sein, dies selbst in dem Modell zu tun. Sie können eine berechnete Eigenschaft der Modelldefinition hinzufügen:

public string MyNonZeroValue 
{ 
    get { return myObject.myValue == 0 ? "" : myObject.myValue.ToString(); } 
} 

Dann binden nur an diesem Modell Eigenschaft:

@Html.TextBox("Something", Model.MyNonZeroValue) 
2

Wie wäre es mit einer kurzen Überprüfung?

@Html.TextBox("Something", Model.myObject.myValue == 0 ? string.Empty : Model.myObject.myValue.ToString()) 
+0

Diese Lösung funktioniert, wenn ich "ToString()" am Ende hinzufügen, wie David unten vorgeschlagen. –

+0

@Matt Yep, meine Typen im ternären Operator mischen ... __updated__ – phuzi

Verwandte Themen