Asp.net-Mvc-4
如何將列表從視圖傳遞到控制器 - MVC 4
在將列表從視圖傳遞到控制器時,我錯過了一些小事。
[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)