2017-11-20 23 views
0

Ich habe ein ViewModel, die aus verschiedenen Objekten bestehen. Auf einer Seite registriere ich Informationen über ein Ticket und ich möchte einfach nur einige Objekte zu meiner Aktion durchlassen, da ich einige Variablen von den Objekten benötige, wenn ich in der Aktion das Ticket erstelle. Ich brauche auch ein Objekt für die Navigation nach dem Hinzufügen des Tickets.MVC-Kern, Asp-für-Tag-Helfer-Problem

Ich habe versucht, auf dem Objekt zu übergeben gerade dies zu tun ...

<input asp-for="@Model.Riksfardtjanst" hidden="hidden" value="@Model.Riksfardtjanst" /> 

und ich habe auch versucht, diese approch ...

<input asp-for="Riksfardtjanst" hidden="hidden" value="@Model.Riksfardtjanst" /> 

Keiner von ihnen arbeiten, und ich glaube, es ist da Ich benutze das HTML-Eingabefeld. Irgendwelche Vorschläge, wie ich meine Viewmodel-Objekte weitergeben kann? Ich bevorzuge es, sie nicht als Asp-Routen zu senden.

+1

Was ist der Typ von 'Riksfardtjanst'? Wohin gibst du es weiter? Schicken Sie diese über ein Formular an eine andere Aktionsmethode? Fügen Sie der Frage die relevanten Details hinzu. Sie sollten versuchen, einfache Typen (int, string, dezimal usw.) mit 'asp-for' zu verwenden. Es ist auch nicht nötig, das Attribut value explizit zu setzen, wenn 'asp-for' verwendet wird. – Shyju

+0

Sie sollten niemals das' value' Attribut setzen, wenn Sie TagHelpers (oder 'HtmlHelper' Methoden) verwenden - diese Methoden machen das schon richtig aus Werten in' ModelState' 'ViewData' und schließlich Ihre Modelleigenschaft) –

+0

'

Antwort

0

Wenn Sie schreiben hidden="hidden" ist ein Tippfehler und es stellt type="hidden" oder versuchen Sie, etwas anderes zu tun?

Wie auch für Ihr Beispiel, Riksfardtjanst ist eine Objekteigenschaft von Modell.

Wenn es eine einfache Art, würde folgendes tun:

<input asp-for="Riksfardtjanst" type="hidden" /> 

Da Sie sagen, dass es ein Objekt, Sie jede Eigenschaft des Objekts als ein verstecktes Feld passieren muss, wie die folgenden:

<input asp-for="Riksfardtjanst.PropA" type="hidden" /> 
<input asp-for="Riksfardtjanst.PropB" type="hidden" /> 
<input asp-for="Riksfardtjanst.PropC" type="hidden" /> 
... 

Beachten Sie, dass dies in der Regel keine gute Praxis ist. Alle Werte, die vom Client stammen, müssen serverseitig validiert werden, da sie leicht manipuliert werden können.

Lass es mich wissen, wenn es geholfen hat!

+0

Eigentlich versteckt = "versteckt" funktioniert gut (auf meinen anderen, das ist einfache Eigenschaften). Ich habe auch versucht Typ = "versteckt", aber es macht keinen Unterschied. Es ist wie in den Kommentaren unter meiner Frage, es wird nicht funktionieren, wenn es ein komplexes Objekt ist. Jedes einzelne Objekt zu übergeben, wird in diesem Fall keine gute Lösung sein. Aus dem Grund, dass Sie über die Validierung sprechen, muss ich stattdessen mit der Databind gehen. TY zum Löschen. – chrillelundmark