Как передать текстовое поле цикла переменной контроллера в ASP.NET MVC

#c# #asp.net #asp.net-mvc

#c# #asp.net #asp.net-mvc

Вопрос:

Я передаю список из моего контроллера в мое представление, а затем внутри формы я перебираю каждый элемент списка и отображаю его с некоторыми текстовыми полями, которые заполнены значением для каждого элемента. И затем я хочу отправить все текстовые поля контроллеру, но он возвращает null для него.

вот моя модель:

     public class DataRedpack
        {
            public string IdRedpack { get; set; }
            //and other properties...
        }
  

и вот мое мнение:

     @model IEnumerable<SisFoPengelolaanPengirimanBarang.Models.DataRedpack>
    @using (Html.BeginForm("InsertRedpack", "Admin", FormMethod.Post))
    {
    
         foreach (var item in Model)
         {
              @Html.Hidden("IdRedpack", item.IdRedpack)
              @Html.TextBox("AmountPack", null, new { type = "number", @class = "form-control", @name = "AmountPack", @min=1, @max=50 })
         }
    }
  

оно передает null моему контроллеру:

     public ActionResult InsertRedpack(List<string> IdRedpack, List<int> AmountPack) //it returing null on this
            {
                if (IdRedpack.Any() amp;amp; AmountPack.Any()) //and got exception on this
                {
                    //updating redpack with id and so on...
                }
            }
  

Мне нужна помощь, как это понять

Ответ №1:

Добавьте «name» для каждого элемента в цикле, например «IdRedpack[0]» . замените переменную индекса в каждом цикле. Также измените свой метод действия контроллера, например.

 public ActionResult InsertRedpack(IEnumerable<SisFoPengelolaanPengirimanBarang.Models.DataRedpack> model)
{
          //Validate your model here
}
  

Комментарии:

1. Textbox и Hidden заменены на TextboxFor и HiddenFor и изменить каждый элемент на свойства модели внутри этого тоже?