MVC считывает несколько элементов управления в список — (размещение элементов с одинаковыми именами со специальным форматированием MVC)

#c# #asp.net-mvc #post

#c# #asp.net-mvc #Публикация

Вопрос:

Снимок экрана сообщения

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

 <input type="text" class="inputs" name="[1].SpecificationTitle" />                              
<input type="text" class="inputs" name="[1].SpecificationDescription" />

<input type="text" class="inputs" name="[2].SpecificationTitle" />                              
<input type="text" class="inputs" name="[2].SpecificationDescription" />
  

Чтение

     [HttpPost]
    public ActionResult addBuyOnlinepostA(ICollection<SpecificationDetails> SpecificationDetails, FormCollection Collection)
    {
    }

   public class SpecificationDetails
    {
        public string SpecificationTitle { get; set; }
        public string SpecificationDescription { get; set; }
    }
  

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

1. Индексаторы должны начинаться с нуля и быть последовательными) (и удалить бессмысленный FormCollection Collection параметр)

2. @StephenMuecke Я проверю это позже, я использовал временный метод, чтобы исправить это.

Ответ №1:

Что, если вы используете jquery / Ajax для получения данных, а затем отправляете их на сервер.

 <script>
$(document).ready(function () {
    $("#submit").click(function () {

        data = $(".inputs").map(function () { return $(this).val();});
        var data2 = data.toArray();
        alert(data2);
        $.ajax({
              type: "POST",
            url: "@Url.Action("Action", "Controller")",
            traditional: true,
            data: {Data:data2 },
            success: successFunc,
            error: errorFunc
            });

        function successFunc(data) {

            alert("success");
        }
        function errorFunc(data) {
            alert("error");
        }
    });
});
  

  <input type="text" class="inputs" name="[1].SpecificationTitle" />
 <input type="text" class="inputs" name="[1].SpecificationDescription" />
 <input type="text" class="inputs" name="[2].SpecificationTitle" />
 <input type="text" class="inputs" name="[2].SpecificationDescription" />

 <input type="button" id="submit" value="submit"/>`
  

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

1. @Sudhashnu Я хочу написать как можно меньше кода, мой метод исключил бы проверку на стороне сервера и т. Д. С меньшими усилиями