2015-11-15 7 views
16

Von Server-Seite habe ich einen neuen booleschen Wert definiert und in <input> Tag festgelegt, aber der Browser konnte es nicht erkennen.Warum kann <input type = "hidden"> keinen booleschen Wert von der Serverseite akzeptieren?

@{ var isAuthor = false; } 
<input type="hidden" value="@isAuthor" /> 

Nach dem Kompilieren, das Ergebnis war: <input type="hidden"></input>

Aber, als ich versuchte, isAuthor zu einem string zu konvertieren, sollte es funktionieren:

@{ var isAuthor = false; } 
<input type="hidden" value="@isAuthor.ToString()" /> 

Ergebnis: <input type="hidden" value="false"></input>

Warum ? Habe ich etwas verpasst?

+1

Attribute _Did Sie something_ verpassen - Nein Es ist nur die die Rasierer Motor funktioniert Art und Weise. Wenn der Wert eines Attributs "null" oder "false" ist, wird es nicht gerendert. Wenn Sie 'name =" @ isAuthor "' hinzugefügt haben, wurde es weder –

+0

gerendert noch können Sie '@ Html.Hidden()' verwenden, Es wird den Wert nicht verbergen, wenn es falsch ist. –

Antwort

19

Dies ist eine Razor-View-Engine-Funktion, die als bedingte Attribute bezeichnet wird. Die Idee ist, das Szenario zu vereinfachen, in dem das Attribut basierend auf dem Wert gerendert werden soll oder nicht. Zuvor mussten Sie if Anweisung schreiben oder ternären Operator verwenden, aber mit bedingten Attributen ist alles viel vereinfacht.

Bei bedingten Attributen wird das Attribut nicht gerendert, wenn der Wert eines Attributs null oder false ist. Wenn Sie möchten, dass der Wert false ist, müssen Sie ihn wie bei der Frage in eine Zeichenfolge umwandeln.

Sie können eine große Einführung lesen bedingten Razor in diesem blog article

+0

Danke. Das ist Hilfe :) –

Verwandte Themen