Свойство модели имеет значение 0, хотя форма дает ему значениеC#

Место общения программистов C#
Ответить
Anonymous
 Свойство модели имеет значение 0, хотя форма дает ему значение

Сообщение Anonymous »

У меня есть функция со следующими определениями: первое — значение по умолчанию, второе — POST:

Код: Выделить всё

public IActionResult TenantTBMapping(int tenantId)

[HttpPost]
public IActionResult TenantTBMapping(TenantTBMappingViewModel model)
Модель определяется следующим образом:

Код: Выделить всё

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; }
}
И у меня есть стандартный HiddenFor в форме страницы:

Код: Выделить всё

@using (Html.BeginForm("TenantTBMapping", "Settings", FormMethod.Post))
{
@Html.HiddenFor(model => model.TenantId);
// ...
}
Насколько я могу судить, все это нормально и выглядит как те же страницы, которые я создавал сотни раз. Но по какой-то причине свойство TenantId не привязывается и всегда выдает 0. Если я извлекаю значение из формы напрямую, используя

Код: Выделить всё

var test = Request.Form["TenantId"];
он ​​даже возвращает правильное значение, так что это что-то с привязкой модели.
Единственное, что я могу догадаться, это то, что структура формы каким-то образом портит привязку TenantId. Как видите, модель содержит несколько полей списка, хотя из формы возвращается только одно поле — «Подробности». У меня есть поля редактирования для каждого свойства каждой записи в деталях (т. е. Model.Details.MappingConfigId), и детали и их поля привязываются правильно.
Это использует ASP.NET Core 8 MVC.
EDIT: я попытался удалить все из формы, кроме скрытого поля и правильно привязанного значения, так что это определенно что-то со структурой формы. Опубликовать на SO немного сложно, но я постараюсь привести образец.
У меня есть компонент, который принимает список класса EditConfiguration, и это то, что генерирует мои редактируемые поля. Опять же, сами поля работают нормально, они просто каким-то образом мешают привязке TenantId. Я могу опубликовать более подробную информацию об этом компоненте/классе, если это поможет.

Код: Выделить всё

@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*/ },
Редактирование 2: снимок экрана с полезной нагрузкой
[img]https://i.sstatic.net /LRh8cVfd.png[/img]


Подробнее здесь: https://stackoverflow.com/questions/793 ... it-a-value
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»