Frage

Ich versuche, eine Checkboxliste in Monorail zu verwenden, um viele bis viele Tabellenbeziehungen zu repräsentieren. Es gibt eine spezielle Tabelle, einen SpecialTag -Tisch und dann einen Specialt -Tisch, der viele bis viele Mapping -Tabellen zwischen Special und SpecialTag ist.

Hier ist ein Auszug aus der Spezialmodellklasse:

[HasAndBelongsToMany(typeof(SpecialTag),
        Table = "SpecialTagging", ColumnKey = "SpecialId", ColumnRef = "SpecialTagId")]
        public IList<SpecialTag> Tags { get; set; }

Und dann in meiner speziellen Ansicht hinzufügen/bearbeiten:

$Form.LabelFor("special.Tags", "Tags")<br/>
    #set($items = $FormHelper.CreateCheckboxList("special.Tags", $specialTags))
        #foreach($specialTag in $items)
            $items.Item("$specialTag.Id") $Form.LabelFor("$specialTag.Id", $specialTag.Name) 
    #end

Die Kontrollkästchen -Liste wird korrekt angezeigt, aber wenn ich einige auswähle und dann auf Speichern klicken, speichern Sie die Special-/Tag -Assoziationen nicht in der SpecialTagging -Tabelle (die an die Aktion Save Controller übergebene Liste enthält eine Liste mit leeren Tags). Eine Sache, die mir aufgefallen ist, war, dass ich bemerkte, dass die Namen und Wertattribute in den Kontrollkästchen funky sind:

<label for="special_Tags">Tags</label><br>
                    <input id="3" name="special.Tags[0]" value="UCampus.Core.Models.SpecialTag" type="checkbox"> <label for="3">Buy 1 Get 1 Free</label> 
            <input id="1" name="special.Tags[1]" value="UCampus.Core.Models.SpecialTag" type="checkbox"> <label for="1">Free</label> 
            <input id="2" name="special.Tags[2]" value="UCampus.Core.Models.SpecialTag" type="checkbox"> <label for="2">Half Price</label> 
            <input id="5" name="special.Tags[3]" value="UCampus.Core.Models.SpecialTag" type="checkbox"> <label for="5">Live Music</label> 
            <input id="4" name="special.Tags[4]" value="UCampus.Core.Models.SpecialTag" type="checkbox"> <label for="4">Outdoor Seating</label> 

Hat jemand irgendwelche Ideen?

Vielen Dank! Justin

War es hilfreich?

Lösung

Die Checkboxliste macht richtig

Es scheint mir, dass Sie auch so etwas rendern könnten wie

<input type="checkbox" name="special.Tags" value="1"/>
<input type="checkbox" name="special.Tags" value="2"/>

Dies macht es einfacher

Auch in Ihrem Beispiel die Tatsache, dass alle Kontrollkästchen den gleichen Wert haben Ucampus.core.models.specialtag Ist wahrscheinlich nicht richtig, möchten Sie möglicherweise die tatsächliche Primärschlüsselkennung aus den Tags ausgeben (nicht sicher, könnten Sie die Klasse anzeigen, die Sie an der Formularhandhabungsaktion wieder verbinden?)

Andere Tipps

Ich konnte es zum Laufen bringen, indem ich die ID- und Textattribute angibt ...

 $Form.LabelFor("special.Tags", "Tags")<br/>
    #set($items = $FormHelper.CreateCheckboxList("special.Tags", $specialTags, "%{value='Id', text='Name'}"))
        #foreach($specialTag in $items)
            $items.Item("$specialTag.Id") $Form.LabelFor("$specialTag.Id", $specialTag.Name) 
    #end
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top