Asp.net-Mvc-4

如何將列表從視圖傳遞到控制器 - MVC 4

  • October 26, 2021

在將列表從視圖傳遞到控制器時,我錯過了一些小事。[HttpPost]它在控制器的方法中顯示 null 。任何人都請指導我如何從視圖獲取列表數據到控制器。請在下面查看我的完整程式碼。

@model List<payorder_draft_printing.Models.registration>

@{
   ViewBag.Title = "bulk_approval";
   Layout = "~/Views/Shared/_Layout.cshtml";
}

<div class="container">

   <div class="row" style="text-align: left">

       <h2><u>Bulk Approval</u></h2>

       <br />
       <br />

       @using (Html.BeginForm("bulk_approval", "Sms", FormMethod.Post, new { enctype = "multipart/form-data" }))
       {
           <div style="width: 700px;" align="center">

               <table id="GetSerial" class="table">
                   <thead>
                       <tr class="ui-widget-header">
                           <th>Account Number</th>
                           <th>Mobile Number</th>
                           <th>Customer Name</th>
                           <th>Branch Code</th>
                           <th>Bulk Upload</th>
                           <th>Create Date</th>
                           <th>Created By</th>
                           <th>Active</th>
                          </tr>
                   </thead>

                   <tbody>

                       @if (Model != null)
                       {
                           foreach (var m in Model)
                           {
                           <tr style="height: 25px; border-bottom: 1px solid gray">
                               <td style="min-width: 120px">@m.account_number</td>
                               <td style="min-width: 120px; width: 450px;">@m.mobile_number</td>
                               <td style="min-width: 250px; width: 250px">@m.customer_name</td>
                               <td style="min-width: 100px; width: 100px">@m.BranchCode</td>
                               <td style="min-width: 100px; width: 100px">@m.BulkUpload</td>
                               <td style="min-width: 150px;">@string.Format("{0:dd-MMM-yyyy}", @m.create_date)</td>
                               <td style="min-width: 100px;">@m.created_by</td>
                               <td style="min-width: 100px; width: 100px">@m.Active</td>
                           </tr>
                           }
                       }

                   </tbody>

               </table>
               <input type="submit" value="Update" />
           </div>
       }

   </div>

</div>

在下面的程式碼中,我試圖將送出的列表從視圖獲取到控制器,但其結果為空。

[HttpPost]
public ActionResult bulk_approval(List<registration> model)//here my model shows null, please guide.
{
   foreach (var abc in model)
   {

   }
   return View();
}

以下是我的課。

public class registration
{
   public int Id { get; set; }
   public string mobile_number { get; set; }
   public string account_number { get; set; }
   public string customer_name { get; set; }
   public int FrequencyId { get; set; }
   public bool Active { get; set; }
   public string BranchCode { get; set; }
   public bool BulkUpload { get; set; }
   public string created_by { get; set; }
   public DateTime create_date { get; set; }
}

使用foreach循環,MVC 只是一遍又一遍地創建相同的輸入,因為它不知道它們應該不同。因此,您需要使用for-loops,並使用索引。我在您的表單中沒有看到任何輸入,所以我只舉一個例子:

@if (Model != null) {
   for (var i = 0; i < Model.Count; i++) {
       @Html.TextBoxFor(m => Model[i].SomeProperty)
   }
}

另外,如果我沒記錯的話,您需要使用IListas 模型:

@model IList<payorder_draft_printing.Models.registration>

為了能夠發布您的(不可編輯的)文本,您需要添加隱藏的輸入:

@Model[i].account_number 
@Html.HiddenFor(m => Model[i].account_number)

引用自:https://stackoverflow.com/questions/39615182