Wie ist das immer? 90 Prozent der Arbeit erledigt man in 10 Prozent der Zeit, und die restlichen 10 Prozent Arbeit brauchen 90% der Zeit. Gerade eben hat mich der ViewState einige Nerven gekostet, ein Paradebeispiel für diese Weisheit. Was ist an diesem Snippet falsch?
if (ViewState["Sort"] == null || ViewState["Sort"] == sort + " DESC")
{
sort += " ASC";
}
else
{
sort += " DESC";
}
Laut Compiler nichts. Er kompiliert 1a ... nur springt er leider nie in den zweiten Zweig, auch wenn die obere Bedingung er füllt scheint. Warum nicht? Tja, weil der Stringvergleich einfach fehl schlägt ... Es muss also
if (ViewState["Sort"] == null || ViewState["Sort"].ToString() == sort + " DESC")
heißen. Ein verhängnisvoller kleiner Fehler, der auch nach 2 Jahren C# noch passiert ...