【问题标题】:The action Method's parameter is always null动作方法的参数始终为空
【发布时间】:2017-06-02 15:55:57
【问题描述】:

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

这是与我的模型相关的代码:

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");
        }
    }
}

【问题讨论】:

  • 暂时没有使用直接的 html mvc 绑定,所以我不能马上回答,但我认为你会从阅读hanselman.com/blog/… 和查看实际请求的发送方式中受益通过浏览器(在浏览器开发工具中)——那么我相信你可以自己拼凑起来。

标签: c# asp.net asp.net-mvc


【解决方案1】:

感谢所有回复的人。 我弄清楚了这个问题。 我更新了我的模型的代码如下,它工作了!!:-

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

【讨论】:

    猜你喜欢
    • 2011-06-17
    • 1970-01-01
    • 2013-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多