当前位置: 首页 > 知识库问答 >
问题:

控制器后操作方法具有计数为0的列表返回

萧献
2023-03-14

这是一个简单的问题,我已经查看了所有相关的答案(有很多),并将我的代码与之进行了比较,我看不出哪里出了错。

控制器

        [HttpGet]
        public ActionResult PatInformation(long id)
        {
            if (ModelState.IsValid)
            {
                var patient = db.tblPatients.Find(id);

                PatientViewModels patientVM = _mapper.Map<PatientViewModels>(patient);

                return View(patientVM);
            }
            return RedirectToAction("Index");
        }

        [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult PatientInformation(PatientViewModels model)
        {
            if (!ModelState.IsValid)
            {
                return View(model);
            }

            tblPatient tblPatient = db.tblPatients.Find(model.PatientID);

            tblPatient.Forename1 = model.Forename1;
            tblPatient.Surname = model.Surname;

            db.Entry(tblPatient).State = EntityState.Modified;
            db.SaveChanges();

            PatientViewModels patientsVM = _mapper.Map<PatientViewModels>(tblPatient);

            return View("PatientInformation", patientsVM);

视图模型

    public class PatientViewModels
    {
        public PatientViewModels()
        {
            tblTumours = new List<TumoursViewModel>();
            tblGP = new tblGP();
            tblAddress = new tblAddress();
        }

        public long PatientID { get; set; }

        public long? HSCNO { get; set; }

        public string Surname { get; set; }
        public string Forename1 { get; set; }
        public string Forename2 { get; set; }
        public string PrevName { get; set; }
        public long? PatAddress { get; set; }
        public long? PatGP { get; set; }
        public string BirthGender { get; set; }
        public DateTime? DOB { get; set; }
        public double? Ethnic { get; set; }
        public string VitalStatus { get; set; }
        public DateTime? DateCreated { get; set; }
        public DateTime? DateAmended { get; set; }
        public double? OldID { get; set; }
        public long? NICRNumber { get; set; }
        public virtual tblAddress tblAddress { get; set; }
        public virtual tblGP tblGP { get; set; }
        public virtual List<TumoursViewModel> tblTumours { get; set; } 
        public string FullAddress { get; set; }
        public string Age { get; set; }
    }

    public class TumoursViewModel
    {
        public long TumourID { get; set; }
        public Nullable<double> TumourNo { get; set; }
        public Nullable<long> PatientID { get; set; }
        public string ICD03 { get; set; }
        public string ICD10 { get; set; }
        public virtual tblMorphology tblMorphology { get; set; }
        public virtual tblBehaviour tblBehaviour { get; set; }
        public virtual tblAddress tblAddress { get; set; }
        public Nullable<System.DateTime> DateOfDiag { get; set; }
        public string Metastases { get; set; }
        public string TumourStatus { get; set; }
        public Nullable<double> StageGrade { get; set; }
        public PatientViewModels Patients { get; set; }
    }
<table id="tblTumours" class="table">
    <thead>
        <tr>
            <th>Tumour Id</th>
            <th>ICD03 Site</th>
            <th>ICD10 Site</th>
            <th>Morphology</th>
            <th>Behaviour</th>
            <th>Diagnosis</th>
            <th>Method</th>
            <th>Status</th>
            <th>Final Stage / Complate</th>
        </tr>
    </thead>
    <tbody>

        @for (int i = 0; i < Model.tblTumours.Count; i++)
        {
        <tr class="table-row" data-href="@Url.Action(" TumourInformation", "Tumours" , new { tumourId=Model.tblTumours[i].TumourID, patientId=Model.PatientID })">
            <td class="pt-3-half" hidden="true">@Html.TextBoxFor(m => Model.tblTumours[i].TumourID, new { Class = "form-control" })</td>
            <td class="pt-3-half">@Html.TextBoxFor(m => Model.tblTumours[i].TumourNo, new { Class = "form-control" })</td>
            <td class="pt-3-half">@Html.HiddenFor(m => Model.tblTumours[i].ICD03, new { Class = "form-control" })</td>
            <td class="pt-3-half">@Html.TextBoxFor(m => Model.tblTumours[i].ICD03, new { Class = "form-control" })</td>
            <td class="pt-3-half">@Html.TextBoxFor(m => Model.tblTumours[i].ICD10, new { Class = "form-control" })</td>
            <td class="pt-3-half">@Html.TextBoxFor(m => Model.tblTumours[i].tblMorphology.morphology_code, new { Class = "form-control" })</td>
            <td class="pt-3-half">@Html.TextBoxFor(m => Model.tblTumours[i].tblBehaviour.BehaviourCode, new { Class = "form-control" })</td>
            <td class="pt-3-half">@Html.TextBoxFor(m => Model.tblTumours[i].DateOfDiag, new { Class = "form-control" })</td>
            <td class="pt-3-half">@Html.TextBoxFor(m => Model.tblTumours[i].Metastases, new { Class = "form-control" })</td>
            <td class="pt-3-half"><span class="badge badge-warning">@Html.TextBoxFor(m => Model.tblTumours[i].TumourStatus, new { Class = "form-control" })</span></td>
            <td class="pt-3-half">@Html.TextBoxFor(m => Model.tblTumours[i].StageGrade, new { Class = "form-control" })</td>
        </tr>
        }


    </tbody>
</table>

当我用tblTumours列表发布控制器时,总是返回as count=0。我相信这是一个简单的解决方案,但我就是看不到。

希望有人能帮助我,因为我刚刚开始作为开发人员并继承了这个。谢谢!

共有1个答案

宋运锋
2023-03-14

试试这个

@using (Html.BeginForm("PatientInformation", "YourController", FormMethod.Post))
{
<table id="tblTumours" class="table">
    <thead>
        <tr>
            <th>Tumour Id</th>
            <th>ICD03 Site</th>
            <th>ICD10 Site</th>
            <th>Morphology</th>
            <th>Behaviour</th>
            <th>Diagnosis</th>
            <th>Method</th>
            <th>Status</th>
            <th>Final Stage / Complate</th>
        </tr>
    </thead>
    <tbody>

        @for (int i = 0; i < Model.tblTumours.Count; i++)
        {
        <tr class="table-row" data-href="@Url.Action(" TumourInformation", "Tumours" , new { tumourId=Model.tblTumours[i].TumourID, patientId=Model.PatientID })">
            <td class="pt-3-half" hidden="true">@Html.TextBoxFor(m => Model.tblTumours[i].TumourID, new { Class = "form-control" })</td>
            <td class="pt-3-half">@Html.TextBoxFor(m => Model.tblTumours[i].TumourNo, new { Class = "form-control" })</td>
            <td class="pt-3-half">@Html.HiddenFor(m => Model.tblTumours[i].ICD03, new { Class = "form-control" })</td>
            <td class="pt-3-half">@Html.TextBoxFor(m => Model.tblTumours[i].ICD03, new { Class = "form-control" })</td>
            <td class="pt-3-half">@Html.TextBoxFor(m => Model.tblTumours[i].ICD10, new { Class = "form-control" })</td>
            <td class="pt-3-half">@Html.TextBoxFor(m => Model.tblTumours[i].tblMorphology.morphology_code, new { Class = "form-control" })</td>
            <td class="pt-3-half">@Html.TextBoxFor(m => Model.tblTumours[i].tblBehaviour.BehaviourCode, new { Class = "form-control" })</td>
            <td class="pt-3-half">@Html.TextBoxFor(m => Model.tblTumours[i].DateOfDiag, new { Class = "form-control" })</td>
            <td class="pt-3-half">@Html.TextBoxFor(m => Model.tblTumours[i].Metastases, new { Class = "form-control" })</td>
            <td class="pt-3-half"><span class="badge badge-warning">@Html.TextBoxFor(m => Model.tblTumours[i].TumourStatus, new { Class = "form-control" })</span></td>
            <td class="pt-3-half">@Html.TextBoxFor(m => Model.tblTumours[i].StageGrade, new { Class = "form-control" })</td>
        </tr>
        }


    </tbody>
</table>
}

public class PatientViewModels
{
    public PatientViewModels()
    {           
       tblGP = new tblGP();
       tblAddress = new tblAddress();
    }

 // Your code
}
 类似资料:
  • Swagger不在UI和JSON中显示参数,即使我的方法有参数,当我添加[FromBody]标记 Swagger UI无参数JSON文件无参数 操作方法时,尤其会发生这种情况: 我使用全新的 Asp.net 核心3.1和2.2 Web应用程序与API模板来测试这一点,我完全按照文档配置 服务进行了配置: 配置:< br > 当我使用[FromRoute]等其他属性时,它确实起作用 我还尝试了这样的

  • 问题内容: 我一直在这里看问题:将MVCajaxjson发布到控制器操作方法,但不幸的是,它似乎并没有帮助我。我的几乎完全相同,除了我的方法签名(但是我已经尝试过了,但仍然没有被击中)。 jQuery的 控制者 但是,无论我尝试什么,我都不会受到打击。通过调试,我知道它发送了一个请求,每次都会得到一个错误。 问题答案: 您的操作需要字符串参数,但是您要发送一个复合对象。 您需要创建一个与您要发送的

  • 问题内容: 我的MVC控制器中有一个简单的方法: 这是一个区域对象: 这就是我从视图中调用方法的方式: 我已经检查了控制器中的方法,并创建了Area对象的列表。您有什么主意,为什么从视图中调用该方法时为什么会出现500内部服务器错误?当我返回其他任何内容(例如Dictionary对象)时,一切正常,只是当我打算将Areas列表转换为Json时,我得到一个错误。 问题答案: 由于类包含和包含的集合,

  • 我需要将bean列表传递到我的控制器中。 和MyBean: 我需要从AngularJS做到这一点,但现在我正在用curl在bash中测试它。我需要什么命令? 会产生如下错误:

  • 问题内容: 我试图实现对包含复杂对象作为参数的控制器操作方法的JQueryAJAX调用。我读了很多博客,并尝试了从中学习到的几种技巧。 我想触发一个异步发布,当用户在某个字段上制表符时调用该异步发布(不是表单保存发布–如我发现的其他示例所示)。 我的意图是: 在客户端上实例化一个对象(不是为View提供类型的ViewModel); 使用视图中多个字段中的数据填充对象; 将此对象转换为JSON; 使

  • 我有Spring Security应用程序。我添加了自定义。自动连线。 我已经通过浏览器测试过了,它工作正常。我可以注册新用户(到数据库),然后登录到应用程序。现在我想为编写测试,但是收到错误。如果我删除Autowung测试通过,但是我不能注册新用户。我需要在哪里找到问题? 在上下文初始化过程中遇到的异常-取消刷新尝试:org.springframework.beans.factory.BeanC