2016-07-12 4 views
0

In meiner Sicht versuche ich, das Modell mit Razor html.hidden aufzufüllen. das Modell hat Eigenschaften die erste ist regelmäßige Liste und ich regelmäßig für Schleife und .hidden funktioniert es ohne Probleme, aber ich kann nicht mit foreachSo übergeben Sie den Wert an HashSet eines Modells aus Sicht C#

foreach (var dup in Model.DuplicateNum) 
      { 
      <tr> 
       <td> 
        <h1 style="color:red">@dup</h1>* 
        @Html.HiddenFor(x => @dup) 
       </td> 
      </tr> 
      } 

so die DuplicateNum ist ein HashSet das gleiche tun . Wenn ich diesen Code I ausführen, ist Model.DuplicateNum Null. Wie kann ich eine HashSet mit Razor füllen. Hier ist, wie ich vorbei Werte aus meiner Sicht tue

Die folgenden Code-Liste Arbeiten zu modellieren und übergibt die Werte an eine der Eigenschaften in meinem Modell, die andere Eigenschaft nicht eingereicht werden immer ..

int subjectsCount = Model.AssignedNumbers.Count(); 
for (int item = 0; item < subjectsCount; item++) 
      { 
       <tr> 
        <td> 
         @Model.AssignedNumbers[item] 


         @Html.HiddenFor(x => x.AssignedNumbers[item]) 


        </td> 
       </tr> 
      } 
+0

Entschuldigung! Ich habe Probleme, Ihr Problem zu verstehen. Sie erhalten NULL in Ihrer Sicht? Haben Sie diese Eigenschaft von Ihrer Aktionsmethode geladen? – Shyju

+0

@Shyju danke für die Antwort, also habe ich eine Ansicht, die Ergebnisse als HTML hat. Das HTML gibt die gleiche Ansicht wieder, aber damit ich diese Informationen an das gleiche Modell weitergeben kann, verwende ich Razor. Ich werde den anderen Abschnitt hinzufügen, wie ich meine andere Liste auffülle und die Werte eins nach dem anderen übergebe – Metawaa

+0

was ist der Typ von DuplicateNum? – Lukos

Antwort

1

Zunächst einmal sieht Ihr HiddenFor falsch aus. @Html.HiddenFor(x => @dup) bedeutet, dass im Zusammenhang mit Ihrem Modell, eine versteckte mit dem Wert Ihrer dup erstellen. Das Modellbinder arbeitet mit Namen und Werten, so sehe ich nicht, wie das irgendetwas an die Eigenschaft DuplicateNum binden würde.

können Sie entweder den Namen selbst und verwenden @Html.Hidden("DuplicateNum", dup) die ich denke, sollte funktionieren, oder Sie könnten in der Lage sein HiddenFor() in irgendeiner Weise zu verwenden, aber es muss auf die richtige Eigenschaft gebunden sein (DuplicateNum), aber wissen noch, welches Element Anzeige, so weiß ich nicht, wie das geht.

Sie könnten auch reines HTML verwenden und nur etwas wie <input type="hidden" name="DuplicateNum" value="@dup"/> rendern, das ich in einer meiner Ansichten verwendet habe und das auch in einer mehr manuellen und verständlichen Weise bindet!

+0

Vielen Dank, tolle Informationen. Ich bin neu in C# und Rasiermesser, weißt du wo ich mehr über @Html lesen kann ... und verschiedene Arten von Sachen, die ich mit Hiddenfor() oder Hidden() benutzen kann und welche Art von Werten da rein geht – Metawaa

+1

I Ich weiß nicht viel von meinem Kopf, da ist SOOO viel herum und einiges davon ist alt. Das Beste daran ist, dass der HtmlHelper am Ende des Tages nur reines HTML produziert und nur Namen und Werte verwendet, um Dinge zu binden. Im schlimmsten Fall machen Sie eine vorgetäuschte Ansicht mit einer grundlegenden Modellbindung und sehen, was passiert, wenn Sie es ausführen, Sie sehen, wie es an verschiedene Arten von Eigenschaften etc. bindet. – Lukos

+1

Also die ... For() Methoden sind nur ein So stellen Sie sicher, dass die richtigen Namen und Typen erstellt werden, ohne dass Sie sie eingeben müssen. Sie sind kein magischer Sekundenkleber, der für jede Art von Bindung benötigt wird! Sie können mit reinem HTML und fest codiertem Text oder den HtmlHelper-Methoden binden. – Lukos

Verwandte Themen