5 Stimmen

Wie rücke ich Werte in einem MultiSelectBox ein?

Ich habe Probleme, eingerückte Elemente in einer Razor MultiSelectBox zu erstellen.

Es funktioniert perfekt, wenn ich das HTML manuell schreibe:

    Parent
     Ich bin eingerückt
     Ich bin eingerückt
    Eltern2
     Ich bin eingerückt
     Ich bin eingerückt

Die HTML-Helfer von Razor zeigen jedoch tatsächlich das vorhergehende geschützte Leerzeichen im Formular an. Wie erwartet werden Literal-Leerzeichen ' ' für Einrückungen komplett ignoriert.

Der Code, den ich verwende, um die Multi-Select-Box zu generieren, lautet:

@Html.ListBoxFor(model => mySelectedValues, new MultiSelectList(myValues), new { size = "15" })

4voto

Charles Burns Punkte 9948

Ich habe eine Lösung gefunden. Zuerst: Ein Multi-Auswahlfeld ist wahrscheinlich nicht die beste Wahl für eine baumartige Steuerung, aber ich überlasse diese Entscheidung dem Programmierer.

Lösung: Fügen Sie ein wörtliches nicht umbrechendes Leerzeichen ein. Diese werden nicht gefiltert, aber das HTML-Äquivalent (sowie ein normaler Leerzeichen) schon.

const char nonBreakingSpace = '\u00A0';

Füge jedem Kind dieses Zeichen voran. Verwende eine separate Liste als Beispiel:

var sendMeToTheHtmlHelper = new List();
foreach(String yourString in yourCollection) {
    // Wenn dieses Element ein Kind ist und Einrückung benötigt:
    sendMeToTheHtmlHelper.Add(nonBreakingSpace + location);
    // ansonsten einfach normal hinzufügen
}

1 Stimmen

Vielen Dank, Mann! Du hast meine Website vor einer schrecklichen "Gedankenstrich-eingerückten" Liste gerettet :)

0voto

Eilon Punkte 25347

Die integrierten HTML-Helfer in Webseiten und MVC codieren automatisch alle Eingabewerte in HTML. Ich bin mir ziemlich sicher, dass es keinen Weg gibt, Ihr Szenario mit dem integrierten Helfer zum Laufen zu bringen.

Glücklicherweise ist jedoch der gesamte Quellcode dieser Helfer auf der CodePlex-Website als Teil der MVC-Quellcodeveröffentlichung verfügbar. Sie können sich diesen Quellcode ansehen und einen benutzerdefinierten Helfer schreiben, der besser auf Ihr Szenario mit Einrückungen zugeschnitten ist.

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