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

Место общения программистов C#
Ответить
Anonymous
 Свойство модели C# MVC имеет значение 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. Как видите, модель содержит несколько полей списка, хотя из формы возвращается только одно поле — «Подробности». У меня есть поля редактирования для каждого свойства каждой записи в Details (т. е. Model.Details.MappingConfigId), а Details и их поля привязываются правильно.
Это использует ASP .NET 8.
РЕДАКТИРОВАНИЕ: я попытался удалить все из формы, кроме скрытого поля и правильно привязанного значения, так что это определенно что-то со структурой формы. Публиковать на SO немного сложно, но я постараюсь привести пример.
У меня есть компонент, который принимает список класса под названием EditConfiguration, и именно он генерирует мои редактируемые поля. Опять же, сами поля работают нормально, они просто каким-то образом мешают привязке TenantId. Я могу опубликовать более подробную информацию об этом компоненте/классе, если это поможет.
@Html.HiddenFor(model => model.TenantId);

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



@Model.ToNames

@await Component.InvokeAsync("Edit", new { config = new List() {
new EditConfiguration() {/*params for my EditConfiguration class*/ },


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

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

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

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

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

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