2016-10-04 3 views
-1

Nach viel auf unten Problem suchen. Endlich beschlossen, mit Ihnen zu teilen. Ich habe ein Modell.POST-Liste Sammlung von View zu Controller MVC 4

Ich verbinde dieses Modell mit MVC View. Meine Sicht wie folgt.

Jetzt, wenn ich alle Details in Sicht füllen und auf Senden klicken, bekomme ich null in meinem Controller.

Also, bitte helfen Sie mir, wie ich meine modifizierte Liste Sammlung auf Controller bekommen kann.

Dank ..

+0

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

+0

Sie können eine 'foreach' nicht verwenden Schleife zum Generieren von Formularsteuerelementen für die Sammlungs-Ite (0) –

Antwort

0

folgenden Code funktioniert gut, sehen Sie den Code unten

Modell:

public class EarlyBirdWeb 
    { 
     public string Client { get; set; } 
     [Display(Name = "Job Name")] 
     public string JobName { get; set; } 
     public List<SelectListItem> Reasons { get; set; } 
     public List<Status> status { get; set; } 
     public List<ETA> etas { get; set; } 
     [Display(Name="Call BU")] 
     public string CallBU { get; set; } 
    } 

-Controller

[HttpPost] 
    public ActionResult Sample(EarlyBirdWeb model) 
     { 
      if (ModelState.IsValid) 
      { 
        // do your stuff like: save to database and redirect to required page. 
      } 

      // If we got this far, something failed, redisplay form 
      return View(model); 
     } 

Ansicht

@model MvcForums.Models.EarlyBirdWeb 

@{ 
    using (Html.BeginForm("Sample", "ControllerName", FormMethod.Post)) 
    { 
     <label>Client</label> 
     @Html.TextBoxFor(m => m.Client) 

     <br/> 

     <label>JobName</label> 
     @Html.TextBoxFor(m => m.JobName) 

     <input type="submit" value="btnSubmit" /> 

    } 
} 
+0

Danke für die Antwort. Aber meine Ansicht wird die Sammlung von EarlyBirdWeb und Ihre Lösung für nur einen Datensatz zurückgeben. Könnten Sie bitte etwas anderes vorschlagen? – user2493287

0

Versuch IEnumerable zu verwenden und stellen Sie sicher, dass Sie Datei rcshtml nicht das Gesetz der mvc Konvention brechen (der Name der cshtml Datei ist für das Verfahren)

@model IEnumerable<EarlyBird.Models.EarlyBirdWeb> 

    @using (Html.BeginForm()) 
       { 
     @Html.AntiForgeryToken() 

     <div class="row"> 
      <table class="table table-bordered table-inverse"> 
       <tr class="bg-warning"> 
        <th>Client 
        </th> 
        <th>Job Name 
        </th> 
        <th>Reason</th> 
        <th>Status</th> 
        <th>ETA</th> 
        <th>CallBU? 
        </th> 

       </tr> 

       @foreach (var item in Model) 
       { 
        <tr> 
         <td> 
          @item.Client 
          @Html.Hidden(@item.Client) 
         </td> 
         <td> 
          @item.JobName 
         </td> 
         <td> 
          @Html.DropDownList("--Select One--", (IEnumerable<SelectListItem>)@item.Reasons) 

         </td> 
         <td> 
          <select> 
           @foreach (var status in item.status) 
           { 
            <option value="@status.StatusName">@status.StatusName</option>   
           } 
          </select> 
         </td> 
         <td> 
          <select> 
           @foreach (var etas in item.etas) 
           { 
            <option value="@etas.ETATime">@etas.ETATime</option>   
           } 
          </select> 
         </td> 
         <td> 
          @item.CallBU 
         </td> 
        </tr> 
       } 

      </table> 

     </div> 
     <div class="row"> 
      <input type="submit" value="Submit" name="Submit" class="btn btn-warning" /> 
     </div> 
    } 
+0

Danke für die Antwort. Ich habe es schon ausprobiert. aber nicht funktioniert. – user2493287

Verwandte Themen