I missed a little thing while passing a list from view to controller. It displays null in [HttpPost]
method of controller. Anyone please guide that how can I get list data from view to controller. Please view my complete code below.
@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>
In the following code i am trying to get the submitted list from view to controller but its result is null.
[HttpPost]
public ActionResult bulk_approval(List<registration> model)//here my model shows null, please guide.
{
foreach (var abc in model)
{
}
return View();
}
Following is my class.
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; }
}
You can use for this: 1 - Using View() , 2 - Using ViewData , 3 - Using ViewBag , 4 - Using your custom class , and 5 - Some combinations of those approaches.
This blog will discuss four (4) common ways to pass data from the view to the controller: Passing by Typed Arguments. Request Object. Form Collections Object.
With a foreach
loop, MVC just creates the same inputs over and over again, because it doesn't know that they should be different. Therefore you need to use for
-loops, and use indexes. I don't see any inputs in your form, so I'll just give you an example:
@if (Model != null) {
for (var i = 0; i < Model.Count; i++) {
@Html.TextBoxFor(m => Model[i].SomeProperty)
}
}
Also, if I remember correctly, you need to use an IList
as model:
@model IList<payorder_draft_printing.Models.registration>
To be able to post your (non-editable) texts, you need to add hidden inputs:
@Model[i].account_number
@Html.HiddenFor(m => Model[i].account_number)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With