2017-06-02 2 views
0

Der Parameter action method in meinem Controller ist immer null. Was mache ich hier falsch? DieseDer Parameter der Methode action ist immer null

ist der Code im Zusammenhang mit meinem Modell:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Threading.Tasks;   
namespace test.Models 
    { 
     public class FileUploadII 
     { 
      public string roomNum; 
      public List<string> cageNums; 
      public FileUploadII() 
      { 
       cageNums = new List<string>(); 
      } 
     } 
    /*I'm using FileUploadIIList to pass a collection of FileUploadII objects to an action method */ 
     public class FileUploadIIList 
     { 
      public List<FileUploadII> FileListII { get; set; }//here 
     } 
    } 

Unten ist der Code für die Ansicht, die die Datensätze auffüllt, die in einer CSV-Datei vorhanden waren. Mit dem Klick auf die Schaltfläche Übermitteln die HttpPost-Aktion UpdRecII im Controller.

@{ ViewData["Title"] = "BRLCore - eCensus - File Upload Records"; } <br> 
@model brlcore.webapp.Models.FileUploadIIList 
<hr /> 
<h2>@ViewData["Title"]</h2> 
<hr /> 
<div class="container"> 
    <form class="form-horizontal" method="post" asp-controller="FileUpload" asp-action="UpdRecII" enctype="multipart/form-data"> 
    <div class="form-group"> 
     <div class="col-md-4"> 
     <a class="btn btn-info" asp-action="Index"><span class="glyphicon glyphicon-chevron-left"></span> Back to File Upload</a> 
     </div> 
    </div> 
    <hr /> 
    <div class="form-group"> 
     <table class="table table-striped"> 
     <thead> 
      <tr> 
      <th>Room Number</th> 
      <th>Cage Number</th> 
      </tr> 
     </thead> 
     <tbody> 
      @{ 
       int i = 0; foreach (var rec in Model.FileListII.ToList()) 
       { 

        <tr> 
        <!--Place td recs here--> 
         <td>@rec.roomNum @Html.HiddenFor(x => x.FileListII[i].roomNum)</td> 
         <td>@{ int j = 0; @foreach (var cageNums in rec.cageNums.ToList()) { 
          <div> 
           @cageNums @Html.HiddenFor(x => x.FileListII[i].cageNums[j]) 
          </div> 
         </td> 
         <td> 
          <a class="btn"><span class="glyphicon glyphicon-edit" asp-action="EditRec"></span> 
          </a> 
         </td> 
       </tr> 
       i++; 
       } 
      } 
     </tbody> 
     </table> 
    </div> 

    <div class="col-md-4"> 
     <div class="btn-group"> 
     <span><input class="btn btn-info" type="submit" value="Validate Details" /></span> 

     </div> 
    </div> 
    </form> 
</div> 

Und unten ist mein Aktionssteuerungsverfahren. Ich habe den Methodenkörper ab sofort nicht implementiert, weil der Methodenparameter (FileUploadIIList fileUpload) immer leer ist (die Größe von FileListII ist immer Null). Ich denke, etwas im Code behindert die Bindung des Modells.

Ich bin neu in ASP.NET MVC.

using Microsoft.AspNetCore.Http; 
using System.IO; 
using brlcore.webapp.Models; 
using System.Web; 
using System.Net.Http; 
using System.Net.Http.Headers; 
using Newtonsoft.Json; 

namespace test.Controllers 
{ 
    public class FileUploadController : Controller 
    { 
     [HttpPost] 
     public IActionResult UpdRecII(FileUploadIIList fileupload) 
     { 

      //Do something later... 
      return View("~/Views/FileUpload/UploadStatus.cshtml"); 
     } 
    } 
} 
+0

Haben Sie nicht mit geraden html mvc Bindungen in eine Zeit lang gearbeitet jetzt so kann ich nicht sofort antworten, aber ich glaube, Sie würden davon profitieren aus dem Lesen von http://www.hanselman.com/blog/ASPNETWireFormatForModelBindingToArraysListsCollectionsDictionaries.aspx und von der Frage, wie die eigentliche Anfrage vom Browser gesendet wird (in den Browser-Entwicklungstools) - dann bin ich sicher, dass Sie es selbst zusammenstellen könnten. –

Antwort

1

Vielen Dank an alle, die geantwortet haben. Ich habe das Problem herausgefunden. ich den Code meines Modell wie folgt aktualisiert und es hat funktioniert !!: -

public class FileUploadII 
{ 
    public string roomNum { get; set; } 
    public List<string> cageNums { get; set; } 
    public FileUploadII() 
    { 
     cageNums = new List<string>(); 
    } 
}