asp.net - 尝试在视图 ASP.NET MVC 中显示视图模型中的数据时出现空异常
问题描述
我正在尝试使用 ViewModel 在我的视图中显示数据,但是这样做时我得到了空异常,我不确定问题是什么。基本上我有一个用户,我希望在我的视图的配置文件布局中显示他的数据,以及来自不同表的数据都在同一个配置文件视图中。
视图模型代码:
public int DonatorID { get; set; }
public string DonatorName { get; set; }
public string DonatorSurname { get; set; }
public string DonatorEmail { get; set; }
public int ContactNo { get; set; }
public int UserID { get; set; }
public string DonatorRank { get; set; }
public string RankIcon { get; set; }
public int XpAmount { get; set; }
public int TokenBalance { get; set; }
public int PaymentID { get; set; }
public string CardNo { get; set; }
public int ExpirationMonth { get; set; }
public int ExpirationYear { get; set; }
public int CVV { get; set; }
public int Zip { get; set; }
public string CardType { get; set; }
public int PaymentDonatorID { get; set; }
public int NpoID { get; set; }
public string NpoName { get; set; }
public double Longitude { get; set; }
public double Latitude { get; set; }
控制器代码:
id = 1;
//Disable lazy loading
db.Configuration.ProxyCreationEnabled = false;
//Add data to the dynamic object
var DynamicProfileDetail = db.tblDonator.Where(zz => zz.user_id == id).Include(yy => yy.tblUser).Include(xx => xx.tblDonator_Rank).FirstOrDefault();
DonatorUserViewModel ProfileDetails = new DonatorUserViewModel();
//Set profile details values
ProfileDetails.DonatorName = DynamicProfileDetail.donator_name;
ProfileDetails.DonatorSurname = DynamicProfileDetail.donator_surname;
ProfileDetails.DonatorEmail = DynamicProfileDetail.tblUser.email;
ProfileDetails.ContactNo = Convert.ToInt32(DynamicProfileDetail.donator_contact_no);
//Set other information
ProfileDetails.XpAmount = DynamicProfileDetail.xp_amount;
ProfileDetails.DonatorRank = DynamicProfileDetail.tblDonator_Rank.description;
ProfileDetails.RankIcon = DynamicProfileDetail.tblDonator_Rank.rank_icon;
ProfileDetails.TokenBalance = DynamicProfileDetail.donator_token_balance;
//Payment details section
int DonatorID = DynamicProfileDetail.donator_id;
var DynamicPaymentDetails = db.tblDonator_Payment_Details.Where(gg => gg.donator_id == DonatorID).Include(ff => ff.tblCard_Type).FirstOrDefault();
DonatorUserViewModel PaymentDetails = new DonatorUserViewModel();
//Set payment detail values
PaymentDetails.CardNo = DynamicPaymentDetails.donator_card_no;
PaymentDetails.ExpirationMonth = DynamicPaymentDetails.expiration_month;
PaymentDetails.ExpirationYear = DynamicPaymentDetails.expiration_year;
PaymentDetails.CVV = DynamicPaymentDetails.cvv;
PaymentDetails.Zip = DynamicPaymentDetails.zip_code;
PaymentDetails.CardType = DynamicPaymentDetails.tblCard_Type.description;
//Map marker section
var DynamicMapMarkers = db.tblNpo;
DonatorUserViewModel MapMarkers = new DonatorUserViewModel();
//Set map marker values
foreach (var item in DynamicMapMarkers)
{
MapMarkers.NpoID = item.npo_id;
MapMarkers.NpoName = item.npo_name;
MapMarkers.Longitude = Convert.ToDouble(item.longitude);
MapMarkers.Latitude = Convert.ToDouble(item.latitude);
MapMarkerList.Add(MapMarkers);
}
//ViewBags to display the relevant info
ViewBag.MapMarkerList = MapMarkerList;
return View();
我在上面代码中的逻辑是,我将数据库中的值设置为 ViewModel 中的对象,然后能够在我的视图中显示它。
查看代码:
@model MyProject.ViewModels.DonatorUserViewModel
<h2>View/Edit your Details:</h2>
<ul>
<li>First Name: @Model.DonatorName</li>
<li>Surname: @Model.DonatorSurname</li>
<li>Contact Number: @Model.ContactNo</li>
<li>Email Address: @Model.DonatorEmail</li>
</ul>
很抱歉问题中的代码量(特别是视图模型和控制器部分)我只需要表明来自不同数据库表的许多不同对象。
现在回到我的问题,在我看来,我得到了一个空异常,我<li>First Name: @Model.DonatorName</li>
也假设其余的异常。我觉得我尝试使用我的视图模型的方式有问题,因为我习惯于使用列表然后在视图中循环遍历该列表,但是我现在不知道该怎么做我只显示数据库表中的一行,而不是所有行。无论如何,任何帮助将不胜感激。
解决方案
推荐阅读
- php - PHP:组合数组然后排序
- pandas - 从 MongoDB 字典到 Dataframe 映射
- php - 带有特殊字符的 Jquery 数据表编辑器 Where 子句
- angular - 我应该使用 Observable 来检测正在设置的值吗?
- liferay - Freemarker:将网页内容转换为 Json 对象
- python - Postgres 获取所有没有空值的列
- azure - 如何停止当前在 Azure Pipelines 上运行的 WebJobs?
- python - 在python中更新txt文件
- entity-framework-core - 添加到实体集合时出现 Cosmos DB 错误“StartIndex 不能小于零”
- syntax - ocaml 有问题