C# 子对象在Ajax Post之后返回Null

C# 子对象在Ajax Post之后返回Null,c#,.net,ajax,asp.net-mvc,C#,.net,Ajax,Asp.net Mvc,我提交了一些信息使用Ajax后,这是应该刷新部分视图。信息被发送到数据库,但是在返回部分视图时,Fees.Feetype数据不能呈现,因为它为null 手动刷新时,Fees.FeeType的呈现没有问题 在ajax文章之后,如何让FeeType包含在部分视图中 模型 public class Members { public virtual ICollection<Fees> Fees { get; set; } } public cl

我提交了一些信息使用Ajax后,这是应该刷新部分视图。信息被发送到数据库,但是在返回部分视图时,Fees.Feetype数据不能呈现,因为它为null

手动刷新时,Fees.FeeType的呈现没有问题

在ajax文章之后,如何让FeeType包含在部分视图中

模型

    public class Members
    {
        public virtual ICollection<Fees> Fees { get; set; }
    }
    public class Fees
    {
            public int FeeTypesId { get; set; }
            public virtual FeeTypes FeeType { get; set; }
            public virtual Members Members { get; set; }
    }
    public class FeeTypes
    {
        public int Id { get; set; }
        public string FeeTypeName { get; set; }
    }
控制器

        public ActionResult AddFees (Fees fees)
        {
            if (ModelState.IsValid)
            {

                db.Fees.Add(fees);

                db.SaveChanges();

                Members members = new Members();
                members = db.Members.Find(fees.MemberNo);

                return PartialView("~/Views/Members/_MemberDetails.cshtml", members);
            }
        }
观点

@model AccPortal.Models.Members
@Html.Partial(“\u MemberDetails”,Model)
//这是部分观点。
@模型AccPortal.Models.Members
@foreach(模型费用中的var项目)
{
//错误发生在这一行,但所有其他费用属性都不会出现问题。
@item.FeeType.FeeTypeName
}

这些是您需要在代码中更改的内容

首先,从动作方法返回一个带有模型的局部视图,如下所示

return PartialView("_MemberDetails", members);
success: function (members) {
             //alert(result);  what is result here, that you have written
             $("#details").html(''); //first make it blank then render
             $("#details").html(members);
            },
Datatype
在ajax方法中应该是html。所以在ajax方法中添加下面这行代码。您可以在此行之后添加此行
data:postData,

dataType: "html",
现在,在ajax成功方法中,进行如下更改

return PartialView("_MemberDetails", members);
success: function (members) {
             //alert(result);  what is result here, that you have written
             $("#details").html(''); //first make it blank then render
             $("#details").html(members);
            },
在局部视图中,在渲染值之前,需要检查FeeType是否存在

@model AccPortal.Models.Members
@foreach (var item in Model.Fees)
 {  
  if(item.FeeType != null)
   <td class="md-fee-value"data-type="status">@item.FeeType.FeeTypeName</td>
  else
   <td class="md-fee-value"data-type="status"></td> //You can write NA here
 }
@model AccPortal.Models.Members
@foreach(模型费用中的var项目)
{  
if(item.FeeType!=null)
@item.FeeType.FeeTypeName
其他的
//你可以在这里写NA
}

这些是您需要在代码中更改的内容

首先,从动作方法返回一个带有模型的局部视图,如下所示

return PartialView("_MemberDetails", members);
success: function (members) {
             //alert(result);  what is result here, that you have written
             $("#details").html(''); //first make it blank then render
             $("#details").html(members);
            },
Datatype
在ajax方法中应该是html。所以在ajax方法中添加下面这行代码。您可以在此行之后添加此行
data:postData,

dataType: "html",
现在,在ajax成功方法中,进行如下更改

return PartialView("_MemberDetails", members);
success: function (members) {
             //alert(result);  what is result here, that you have written
             $("#details").html(''); //first make it blank then render
             $("#details").html(members);
            },
在局部视图中,在渲染值之前,需要检查FeeType是否存在

@model AccPortal.Models.Members
@foreach (var item in Model.Fees)
 {  
  if(item.FeeType != null)
   <td class="md-fee-value"data-type="status">@item.FeeType.FeeTypeName</td>
  else
   <td class="md-fee-value"data-type="status"></td> //You can write NA here
 }
@model AccPortal.Models.Members
@foreach(模型费用中的var项目)
{  
if(item.FeeType!=null)
@item.FeeType.FeeTypeName
其他的
//你可以在这里写NA
}

在填充列表之前,您需要检查
null
值,以避免
null异常

 @model AccPortal.Models.Members
            @foreach (var item in Model.Fees)
            {
              if(item.FeeType != null)
                <td class="md-fee-value"data-type="status">@item.FeeType.FeeTypeName</td>
            }
@model AccPortal.Models.Members
@foreach(模型费用中的var项目)
{
if(item.FeeType!=null)
@item.FeeType.FeeTypeName
}

由于某些数据可能丢失,从而导致出现问题,因此如果出现
条件,它将只填充
非空的数据
,您需要在填充列表之前检查
空值,以避免
空异常

 @model AccPortal.Models.Members
            @foreach (var item in Model.Fees)
            {
              if(item.FeeType != null)
                <td class="md-fee-value"data-type="status">@item.FeeType.FeeTypeName</td>
            }
@model AccPortal.Models.Members
@foreach(模型费用中的var项目)
{
if(item.FeeType!=null)
@item.FeeType.FeeTypeName
}

由于某些数据可能丢失导致问题,因此在
if
条件下,它将只填充
非空的数据

空类型的问题最终是延迟加载

在保存更改并包含Fees.FeeTypes后,我必须重新查询db以返回正确填充的模型

        members = db.Members.Find(fees.MemberNo);
        members.Fees = db.Fees.Include(x => x.FeeType).Where(x => x.Members.MemberNo.Equals(x.MemberNo)).ToList();

null类型的问题最终是延迟加载

在保存更改并包含Fees.FeeTypes后,我必须重新查询db以返回正确填充的模型

        members = db.Members.Find(fees.MemberNo);
        members.Fees = db.Fees.Include(x => x.FeeType).Where(x => x.Members.MemberNo.Equals(x.MemberNo)).ToList();


我能知道你是只绑定部分视图中的FeeType.FeeTypeName还是所有数据吗??您的_MemberDetails.cshtml部分视图在哪里?我只在一个地方绑定它_MemberDetails.cshtml位于~/Views/Members/\u MemberDetails.cshtlm我的问题是你可以发布你的部分视图代码吗\u MemberDetails.cshtmi已经编辑了视图部分以显示哪个是部分视图,请使用下面的代码检查并告诉我。我可以知道你是在部分视图中只绑定FeeType.FeeTypeName还是绑定所有数据吗??您的_MemberDetails.cshtml部分视图在哪里?我只在一个地方绑定它_MemberDetails.cshtml位于~/Views/Members/\u MemberDetails.cshtmlm我的问题是你能发布你的部分视图代码吗\u MemberDetails.cshtmlI已经编辑了视图部分以显示哪个是部分视图,请使用下面的代码进行检查并告诉我。我已经做了更改,但是问题仍然是一样的。完全相同的错误“+$exception{”对象引用未设置为对象的实例。“}System.NullReferenceException”在发生错误的位置对视图进行注释@item.FeeType.FeeTypeNameYes!在渲染之前,你需要检查FeeType的值,检查我更新的答案并让我知道。我不能这样做。FeeType不是列表错误CS0019运算符“!=”无法应用于“method group”和“int”类型的操作数为什么?发生了什么事??问题是什么?我已经做了更改,但是问题仍然是一样的。完全相同的错误“+$exception{”对象引用未设置为对象的实例。“}System.NullReferenceException”视图在错误发生的地方被注释@item.FeeType.FeeTypeNameYes!在渲染之前,你需要检查FeeType的值,检查我更新的答案并让我知道。我不能这样做。FeeType不是列表错误CS0019运算符“!=”无法应用于“method group”和“int”类型的操作数为什么?发生了什么事??有什么问题?这是有效的。现在我必须找出为什么第一条记录是空的。谢谢你的帮助,这很有效。现在我必须找出为什么第一条记录是空的。谢谢你的帮助