KK127 Ответов: 1

Как передать список моделей контроллеру


Я пытаюсь опубликовать список объектов из представления в контроллер.

Ниже приведен мой код:

@using Models
    @model IList<Add>
    @{
        ViewData["Title"] = "AddNewFields";
    }
    <form asp-controller="Trans" asp-action="InsertFields" method="post" class="form-horizontal card-body" role="form">
<td><input type="text" class="form-control" value="Field Size" asp-for="@Model[i].TypeFlag"/></td>
                            <td><input type="text" class="form-control" value="Field Value" asp-for="@Model[i].FieldValue"/></td>
                            <td><input type="text" class="form-control" value="Field Format" asp-for="@Model[i].FieldFormat"/></td>
</form> 


Я буду добавлять МО эти текстовые поля снова при нажатии кнопки.

Модель:

public class Add
    {        
        public string TypeFlag { get; set; }

        public string FieldValue { get; set; }

        public string FieldFormat { get; set; }
    }

Controller:

<pre>public string InsertFields(IList<Add> fields)
{
            //some logic
}


Когда я запускаю приложение, я получаю следующую ошибку:

NullReferenceException: Object reference not set to an instance of an object.

    AspNetCore.Views_Trans_Add.<ExecuteAsync>b__27_0() in AddNewFields.cshtml

            @for (int i = 0; i < Model.Count; i++)

Microsoft.AspNetCore.Razor.Runtime.TagHelpers.TagHelperExecutionContext.GetChildContentAsync(bool useCachedResult, HtmlEncoder encoder)
Microsoft.AspNetCore.Mvc.TagHelpers.RenderAtEndOfFormTagHelper.ProcessAsync(TagHelperContext context, TagHelperOutput output)
Microsoft.AspNetCore.Razor.Runtime.TagHelpers.TagHelperRunner.RunAsync(TagHelperExecutionContext executionContext)


Что я уже пробовал:

Please help me...I am stuck here from 1 week..

1 Ответов

Рейтинг:
1

Dave Kreskowiak

Похоже, вы не передали список "добавить" в представление, поэтому вы получаете ошибку, которую вы делаете. Ваш код Razor не проверяет, действительно ли он получил объект IList<add>. Вы просто предполагаете, что это так, и начинаете пытаться получить элементы из коллекции, которая даже не существует, поэтому вызовите .Граф с генерировать исключение, вы видите.

Это самая простая ошибка, которую можно отследить с помощью отладчика. Вам лучше очень хорошо познакомиться с отладчиком, потому что это инструмент для отладки вас. Он там, чтобы вы могли исследовать и понять свой код. Причина, по которой у вас есть ошибка в первую очередь, заключается в том, что вы просто догадываетесь о том, что делает ваш код, вместо того, чтобы узнать об этом и понять его.

Я не могу сказать вам, почему код Razor не получил коллекцию, потому что вы не показали код, который создает коллекцию и передает ее в представление.

Если вы не знаете, как передать объект в представление, вам действительно нужно вернуться к изучению основ MVC. Это вещи начального уровня здесь.

return SomeView(objectToPassToModel);