asp.net MVC Kontrollkästchen Kopfschmerzen!

9

Ich habe viele Fragen zu diesem Thema gesehen.

Ich benutze asp.net MVC 1.0

Problembereich

Wenn ich

verwende %Vor%

Dann warum es wie

rendert %Vor%

Ich lege das in foreach loop und ich habe 5 Zeilen.

wenn ich ein Formular mit true, true, true, false, false absende dann bekomme ich true,false,true,false,true,false,false,false

d. für falsch = & gt; falsch.

für wahr = & gt; wahr, falsch

Wenn ich

verwende %Vor%

Dann werde ich nicht unkontrolliert eins.

Wie überwinde ich dieses Problem?

Bitte posten Sie keine Antwort, indem Sie loop im formcollection-Objekt verwenden und jeden Schlüssel prüfen!

    
Vikas 08.06.2009, 06:44
quelle

10 Antworten

2

Ich weiß, das ist nicht das Elegante, aber das habe ich getan:

collection ["response"]. Ersetze ("true, false", "true"). Split (','). ToList ();

    
RailRhoad 30.07.2009 02:11
quelle
1

Wenn Sie in Ihrem Beispiel ein Formular mit true, true, true, false, false senden, erhalten Sie ein

true,false,true,false,true,false,false,false
Es ist interessant zu bemerken, dass Sie nicht wirklich acht Werte zurückbekommen, aber fünf Arrays, die nur so aussehen, sind der Fall, weil alle Werte verbunden sind Ich weiß, dass Sie gebeten haben, keine Schleife für Ihre Antwort zu bekommen, aber ich kann eine verwenden, um zu demonstrieren, was hier wirklich passiert: %Vor%

Also erhalten Sie für Ihre aktivierten Kästchen ein Werte-Array mit zwei Elementen und für nicht markierte Kästchen erhalten Sie nur ein Array mit einem einzelnen Element.

Um also Ihre Frage zu beantworten, wie lösen Sie dieses Problem , liegt die Antwort darin, GetValues ​​statt GetValue zu verwenden und Ihre geposteten Felder als Arrays und nicht als Strings zu betrachten.

Viel Glück!

    
Funka 08.06.2009 19:34
quelle
1

Persönlich denke ich, dass ich überall auf dem Server nach "richtig, falsch" suchen muss, ist ein Schmerz. Ich habe einen jquery-Fix ​​geschrieben, der das zusätzliche versteckte Feld entfernt, das vom Html.Checkbox-Helfer erstellt wurde, wenn ein Kontrollkästchen aktiviert ist, und dann das Feld zurückfügt, wenn das Kontrollkästchen deaktiviert ist. Serverwerte sind immer "wahr" oder "falsch". Checkbox-Listen sind etwas subjektiv, wie Sie wollen, dass sie agieren, was ich diskutiere, aber ich entferne "falsch" von der Wertemenge, was bedeutet, dass der Formwert ausgeschlossen wird, wenn alle Kästchen in der Liste deaktiviert sind.

Ссылка

Mit dieser Technik hatte ich ziemlich guten Erfolg. Bitte lassen Sie mich wissen, wenn Sie es ausprobieren und Probleme haben.

    
Mindstorm Interactive 09.02.2011 20:16
quelle
1

Sie müssen eine eigene Modellbindung für die CheckBox-Werte durchführen.

Holen Sie sich die Liste der Werte aus FormCollection oder Request.Form für diese CheckBox-ID und ersetzen Sie true, false durch true:

%Vor%

Jetzt haben Sie eine Liste, ob eine CheckBox ausgewählt wurde oder nicht .... machen Sie den Rest selbst:)

    
ShaneGray 14.04.2011 09:27
quelle
0

Es wird so gerendert, weil der Standardbinder die FormCollection benötigt, um einen Wert für nicht nullbare Parameter zu haben. Mit dieser Technik sind wir sicher, dass der Wert gesendet wird, auch wenn das Kontrollkästchen nicht aktiviert ist (standardmäßig wird der Wert nur gesendet, wenn er aktiviert ist). Wenn Sie diese Controller-Methode mit nur einer HTML-Eingabe verwenden, erhalten Sie einen Fehler beim Formular-Post mit nicht abgehaktem Kontrollkästchen (der Wert des Kontrollkästchens wird nicht angezeigt und der Ordner weiß nicht, was er für den Wert von isItemSelected verwenden soll):

%Vor%

Sie können versuchen, so etwas mit nur einer HTML-Eingabe zu verwenden:

%Vor%

Aber in diesem Fall ist isItemSelected gleich Null oder wird wahr sein. Und es wird niemals falsch werden.

    
zihotki 08.06.2009 10:48
quelle
0

Nun, es gibt einige Möglichkeiten, die Sie basierend auf Ihren Anforderungen tun können.

Ich benutze diese Methode.

%Vor%

Dies sind möglicherweise Kontrollkästchen.

Auf der Serverseite werde ich auch ein Array von IDs des Elements im Modell haben. Also überprüfe ich, ob es in Array

ist %Vor%

Verschiedene Leute haben verschiedene Tests.

    
Vikas 09.06.2009 04:36
quelle
0
  

Dies sollte nur für einfache CheckBox verwendet werden, was Sie wollen, ist checkboxList, die noch nicht in der API von ASP.net MVC enthalten ist

Wenn Sie nach etwas wie Checkbox-Liste suchen, sollten Sie vielleicht Ihren eigenen Helfer schreiben, damit Sie HTML gut verstehen.

Das ist es! :)

    
DucDigital 11.10.2009 17:53
quelle
0

Einfach zu prüfen, ob AttemptedValue.Contains ("true") - es wird, wenn es aktiviert ist, nicht, wenn es deaktiviert ist ....

    
mansachs 14.04.2010 13:54
quelle
0

in der Ansicht:

%Vor%

Controller:

%Vor%     
bluwater2001 15.07.2011 15:57
quelle
0

Um den Wert eines Kontrollkästchens zu erhalten, ist es wahr oder falsch

%Vor%     
Yasser-Farag 17.04.2012 12:22
quelle

Tags und Links