Die Modelleigenschaft hat den Wert 0, obwohl das Formular ihr einen Wert vorgibtC#

Ein Treffpunkt für C#-Programmierer
Guest
 Die Modelleigenschaft hat den Wert 0, obwohl das Formular ihr einen Wert vorgibt

Post by Guest »

Ich habe eine Funktion mit den folgenden Definitionen, die erste ist die Standardeinstellung und die zweite ist der POST:

Code: Select all

public IActionResult TenantTBMapping(int tenantId)

[HttpPost]
public IActionResult TenantTBMapping(TenantTBMappingViewModel model)
Das Modell ist wie folgt definiert:

Code: Select all

public class TenantTBMappingViewModel
{
public int TenantId { get; set; }
public List Details { get; set; }
public List? ToNames { get; set; }
public List? Inputs { get; set; }
public List? MappingTables { get; set; }
}
Und ich habe dieses Standard-HiddenFor im Formular der Seite:

Code: Select all

@using (Html.BeginForm("TenantTBMapping", "Settings", FormMethod.Post))
{
@Html.HiddenFor(model => model.TenantId);
// ...
}
Soweit ich das beurteilen kann, ist das alles normal und sieht aus wie die gleichen Seiten, die ich hunderte Male erstellt habe. Aber aus irgendeinem Grund kann die TenantId-Eigenschaft nicht gebunden werden und gibt immer eine 0 aus. Wenn ich den Wert direkt mit
aus dem Formular ziehe

Code: Select all

var test = Request.Form["TenantId"];
es gibt sogar den richtigen Wert zurück, also liegt es an der Modellbindung.
Das Einzige, was ich erraten kann, ist die Struktur des Formulars bringt irgendwie die TenantId-Bindung durcheinander. Wie Sie sehen können, enthält das Modell mehrere Listenfelder, obwohl das einzige vom Formular zurückgegebene Feld „Details“ ist. Ich habe Bearbeitungsfelder für jede Eigenschaft jedes Eintrags in Details (d. h. Model.Details.MappingConfigId), und die Details und ihre Felder sind korrekt bindend.
Dies verwendet ASP.NET Core 8 MVC.
BEARBEITEN: Ich habe versucht, alles aus dem Formular zu löschen, außer dem ausgeblendeten Feld und dem korrekt gebundenen Wert, es liegt also definitiv an der Formularstruktur. Es ist etwas komplex, auf SO zu posten, aber ich werde mein Bestes geben, um ein Beispiel bereitzustellen.
Ich habe eine Komponente, die eine Liste einer Klasse namens EditConfiguration akzeptiert, und Dadurch werden meine bearbeitbaren Felder generiert. Auch hier funktionieren die Felder selbst einwandfrei, sie stören lediglich irgendwie die Bindung von TenantId. Ich kann weitere Details zu dieser Komponente/Klasse posten, wenn das hilft.

Code: Select all

@Html.HiddenFor(model => model.TenantId);

@for (int i = 0; i < Model.Details.Count; i++)
{
MappingConfigDetail detail = Model.Details[i];
string prefix = "Model.Details[" + i.ToString() + "].";



@Model.ToNames[i]

@await Component.InvokeAsync("Edit", new { config = new List() {
new EditConfiguration() {/*params for my EditConfiguration class*/ },
Edit 2: Screenshot der Nutzlast
[img]https://i.sstatic.net /LRh8cVfd.png[/img]

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post