操作方法的参数始终为空
问题描述:
我的控制器中的操作方法参数始终为空。我在这里做错了什么?操作方法的参数始终为空
这是关系到我的模型代码:
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");
}
}
}
答
谢谢所有回复的人。 我想出了这个问题。 我更新型号的代码如下所示,它的工作!!: -
public class FileUploadII
{
public string roomNum { get; set; }
public List<string> cageNums { get; set; }
public FileUploadII()
{
cageNums = new List<string>();
}
}
有没有直HTML MVC绑定的,而现在的工作,所以我不能回答马上,但我认为你将受益从阅读http://www.hanselman.com/blog/ASPNETWireFormatForModelBindingToArraysListsCollectionsDictionaries.aspx,看看实际的请求是如何由浏览器发送的(在浏览器开发工具中) - 那么我相信你可以将它拼凑在一起。 –