操作方法的参数始终为空

问题描述:

我的控制器中的操作方法参数始终为空。我在这里做错了什么?操作方法的参数始终为空

这是关系到我的模型代码:

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

下面是视图,其填充它存在于一个CSV文件中的记录代码。点击提交按钮控制器中的HttpPost动作UpdRecII。

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

而下面是我的动作控制方法。至今我还没有实现方法体,因为方法参数(FileUploadIIList fileupload)总是空的(FileListII的大小始终为零)。我猜想代码中的某些东西妨碍了模型绑定。

我是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

有没有直HTML MVC绑定的,而现在的工作,所以我不能回答马上,但我认为你将受益从阅读http://www.hanselman.com/blog/ASPNETWireFormatForModelBindingToArraysListsCollectionsDictionaries.aspx,看看实际的请求是如何由浏览器发送的(在浏览器开发工具中) - 那么我相信你可以将它拼凑在一起。 –

谢谢所有回复的人。 我想出了这个问题。 我更新型号的代码如下所示,它的工作!!: -

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