2016-09-21 2 views
0

Ich verpasste eine kleine Sache beim Übergeben einer Liste von der Ansicht zum Controller. In der [HttpPost] -Methode des Controllers wird Null angezeigt. Irgendjemand bitte führen Sie das, wie ich Listendaten von Ansicht zum Prüfer erhalten kann. Bitte sehen Sie sich meinen kompletten Code unten an.Wie führe ich die Liste von der Ansicht zum Controller - MVC 4

@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> 

Im folgenden Code Ich versuche, die vorgelegte Liste aus dem Blickfeld zu bekommen, um die Steuerung aber das Ergebnis ist null.

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

       } 
       return View(); 
      } 

Folgendes ist meine Klasse.

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; } 
} 
+0

Verwenden Indizierung ('for'-loop) anstelle eines' foreach' Schleife – devqon

+0

können Sie bitte Beispielcode teilen , Vielen Dank. –

+0

Mögliches Duplikat von [HTML-Tabelle zu ADO.NET DataTable] (http://stackoverflow.com/questions/30094047/html-table-to-ado-net-datatable) –

Antwort

1

Mit einer foreach Schleife, MVC schafft nur die gleichen Eingaben immer und immer wieder, weil sie nicht weiß, dass sie anders sein sollte. Daher müssen Sie for -loops verwenden und Indizes verwenden. Ich sehe keine Eingaben in der Form, also werde ich Ihnen nur ein Beispiel geben:

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

Auch, wenn ich mich richtig erinnere, müssen Sie ein IList als Modell verwenden:

@model IList<payorder_draft_printing.Models.registration> 

Lage sein, Ihre (nicht editierbar) Texte zu veröffentlichen, müssen Sie versteckte Eingänge hinzuzufügen:

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

Vielen Dank für Ihre Klarstellung Jetzt iam Werte richtig erhalten.Jetzt Wie kann ich Werte in Form von Label anstelle von Textbox anzeigen , weil Sie @ Html.TextBoxFor in Ihrem Code verwendet haben, danke –

+2

Warum möchten Sie Dinge veröffentlichen, die nicht einmal bearbeitbar sind? Wenn Sie keine Eingaben haben, blendet die Idee eines Formulars – devqon

+0

Sie haben Recht, Eigentlich ist mein Szenario, dass ich nur bearbeitet werden muss die letzte Spalte [Status] Boolescher Wert entweder ist es wahr oder falsch, und Rest der Spalten sollte nur als Etikett anzeigen, bitte führen Sie, wie es geht, danke. –

Verwandte Themen