Форма ASP.NET MVC 5 не отправляет подробности строк таблицы (с таблицами данных jQuery 1.10.15) - PullRequest
0 голосов
/ 12 июня 2018

Я создал представление с формой, включающей таблицу со строками, инициализируемыми из списка, таблицу, спроектированную с помощью jQuery.datatables 1.10.15.

Когда я пытался отправить форму, то таблица не отправлялась, я получалnull в параметре списка в контроллере действий.

просмотр страницы:

@model List<SendMails.ViewModels.ViewModelDetailsFile> 
@{
    ViewBag.Title = "UpdateItems"; 
 }


@using (Html.BeginForm("UpdateItems", "Home", FormMethod.Post)) {
    @Html.AntiForgeryToken()
    <table id="DetailsExcelChoose">
        <thead>
            <tr>
                <th class="RightToLeft wideIndexCol">IndexRow</th>
                <th class="RightToLeft">InvoiceNumber</th>
                <th class="RightToLeft wideIndexCol">NumberClient</th>
                <th class="RightToLeft ">NameClient</th>
                <th class="RightToLeft wideIndexCol">Amount</th>
                <th class="RightToLeft wideIndexCol">Email</th>
                <th class="RightToLeft wideIndexCol">ContactPerson</th>
                <th class="RightToLeft ">Details</th>
            </tr>
        </thead>
        <tbody name="iObjsUpdate">
            @if (Model != null)
            {
                for (var i = 0; i < Model.Count(); i++)
                {
                    <tr>
                        <td name="IndexRow">@Model[i].IndexRow</td>
                        <td name="InvoiceNumber">@Model[i].InvoiceNumber</td>
                        <td name="NumberClient">@Model[i].NumberClient</td>
                        <td name="NameClient">@Model[i].NameClient</td>
                        <td name="Amount">@Model[i].Amount</td>
                        <td name="Email"><input type="email" id="Email" name="Email" value=@Model[i].Email /></td>
                        <td name="ContactPerson"><input type="text" id="ContactPerson" name="ContactPerson" value=@Model[i].ContactPerson></td>
                        <td name="Details">@Model[i].Details</td>
                    </tr>
                }
            }
        </tbody>
    </table>
    <div class="form-group row">
        <button type="submit" class="btn btn-primary">send</button>
    </div> }

JS-файл:

$(document).ready(function () {
    var dataTable = $("#DetailsExcelChoose").DataTable();
});

Действие контроллера:

        [HttpPost]
        [ValidateAntiForgeryToken]
        [Route("UpdateItems")]
        public async Task<ActionResult> UpdateItems(List<ViewModelDetailsFile> iObjsUpdate)
        {
             /// iObjsUpdate is null
        }

Я прочитал, что нужно установить атрибут имени для asp.net, который знает, почему колонны ...

Но все мои поиски в Google не увенчались успехом.

Если я этого не сделалясно, что я хочу, так что ... Я хочу отправить детали строк в действие контроллера в виде списка объектов (да, я знаю, что могу сделать это в ajax, но я хочу таким образом)

1 Ответ

0 голосов
/ 12 июня 2018

Для отправки или публикации подробностей строки в контроллере вы должны использовать скрытые поля на .cshtml или просмотре страницы.попробуйте это

for (var i = 0; i < Model.Count(); i++)
   {
     <tr>
         @Html.HiddenFor(x => x.Model[i].IndexRow)
         @Html.HiddenFor(x => x.Model[i].InvoiceNumber)
         @Html.HiddenFor(x => x.Model[i].NumberClient)
         @Html.HiddenFor(x => x.Model[i].NameClient)
         @Html.HiddenFor(x => x.Model[i].Amount)
         @Html.HiddenFor(x => x.Model[i].Email )
         @Html.HiddenFor(x => x.Model[i].ContactPerson)
         @Html.HiddenFor(x => x.Model[i].Details)

         <td name="IndexRow">@Model[i].IndexRow</td>
         <td name="InvoiceNumber">@Model[i].InvoiceNumber</td>
         <td name="NumberClient">@Model[i].NumberClient</td>
         <td name="NameClient">@Model[i].NameClient</td>
         <td name="Amount">@Model[i].Amount</td>
         <td name="Email"><input type="email" id="Email" name="Email" value=@Model[i].Email /></td>
         <td name="ContactPerson"><input type="text" id="ContactPerson" name="ContactPerson" value=@Model[i].ContactPerson></td>
         <td name="Details">@Model[i].Details</td>
     </tr>
   }
...