C# 子对象在Ajax Post之后返回Null
我提交了一些信息使用Ajax后,这是应该刷新部分视图。信息被发送到数据库,但是在返回部分视图时,Fees.Feetype数据不能呈现,因为它为null 手动刷新时,Fees.FeeType的呈现没有问题 在ajax文章之后,如何让FeeType包含在部分视图中 模型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
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”类型的操作数为什么?发生了什么事??有什么问题?这是有效的。现在我必须找出为什么第一条记录是空的。谢谢你的帮助,这很有效。现在我必须找出为什么第一条记录是空的。谢谢你的帮助