用列表分离模型
Separate Model with List
我想 return 网页加载时的链接列表。现在我有一个名为 SsoLink.cs 的模型绑定到页面。我想要 return 一个列表,所以我创建了另一个名为 SsoLinks.cs 的模型,它有一个列表。在我的辅助函数中,我不断得到 "object not set to an instance of an object"。
SsoLink.cs
public class SsoLink
{
public enum TypesOfLinks
{
[Display(Name="Please Select a Type")]
Types,
Collaboration,
[Display(Name="Backups & Storage")]
Backups_Storage,
Development,
[Display(Name="Cloud Services")]
Cloud_Services,
[Display(Name="Human Resources")]
Human_Resources,
Analytics
}
public string Id { get; set; }
public string Name { get; set; }
public string Url { get; set; }
public string Owner { get; set; }
public string OwnerEmail { get; set; }
public string LinkDescription { get; set; }
public TypesOfLinks LinkType { get; set; }
}
SsoLinks.cs
public class SsoLinks
{
public List<SsoLink> Links {get; set;}
}
GetLinksHelper.cs
public partial class SsoLinkHelper
{
public static SsoLinks GetLinks()
{
var ssoList = new SsoLinks();
try
{
//search the index for all sso entries
var searchResponse = _client.Search<SsoLink>(s => s
.Index(_ssoLinkIndex)
.Size(500)
.Query(q => q
.MatchAll()
)
);
if (searchResponse.Documents.Count == 0)
{
return ssoList;
}
ssoList.Links.AddRange(searchResponse.Hits.Select(hit => new SsoLink() {Id = hit.Source.Id, Name = hit.Source.Name, Url = hit.Source.Url, Owner = hit.Source.Owner}));
return ssoList;
}
catch (Exception e)
{
Log.Error(e, "Web.Helpers.SsoLinkHelper.GetLinks");
return ssoList;
}
}
}
调试时,它在 SsoLinks.Links.AddRange(等)处失败。如何为查询中找到的每个项目向 ssoList 添加新的 SsoLink?
编辑:这是调试时的错误截图。
空引用异常看起来像是来自 ssoList.Links
在调用 AddRange
时 null
,因此需要将其初始化为 [=13= 的新实例] 在调用AddRange()
之前
Russ 的回答让我走上了正确的道路,我最终只需要将我的观点更改为:
@model List<SharedModels.Models.SsoLink>
而不是
@model SharedModels.Models.SsoLink
并取消 SsoLinks 模型。
我想 return 网页加载时的链接列表。现在我有一个名为 SsoLink.cs 的模型绑定到页面。我想要 return 一个列表,所以我创建了另一个名为 SsoLinks.cs 的模型,它有一个列表。在我的辅助函数中,我不断得到 "object not set to an instance of an object"。
SsoLink.cs
public class SsoLink
{
public enum TypesOfLinks
{
[Display(Name="Please Select a Type")]
Types,
Collaboration,
[Display(Name="Backups & Storage")]
Backups_Storage,
Development,
[Display(Name="Cloud Services")]
Cloud_Services,
[Display(Name="Human Resources")]
Human_Resources,
Analytics
}
public string Id { get; set; }
public string Name { get; set; }
public string Url { get; set; }
public string Owner { get; set; }
public string OwnerEmail { get; set; }
public string LinkDescription { get; set; }
public TypesOfLinks LinkType { get; set; }
}
SsoLinks.cs
public class SsoLinks
{
public List<SsoLink> Links {get; set;}
}
GetLinksHelper.cs
public partial class SsoLinkHelper
{
public static SsoLinks GetLinks()
{
var ssoList = new SsoLinks();
try
{
//search the index for all sso entries
var searchResponse = _client.Search<SsoLink>(s => s
.Index(_ssoLinkIndex)
.Size(500)
.Query(q => q
.MatchAll()
)
);
if (searchResponse.Documents.Count == 0)
{
return ssoList;
}
ssoList.Links.AddRange(searchResponse.Hits.Select(hit => new SsoLink() {Id = hit.Source.Id, Name = hit.Source.Name, Url = hit.Source.Url, Owner = hit.Source.Owner}));
return ssoList;
}
catch (Exception e)
{
Log.Error(e, "Web.Helpers.SsoLinkHelper.GetLinks");
return ssoList;
}
}
}
调试时,它在 SsoLinks.Links.AddRange(等)处失败。如何为查询中找到的每个项目向 ssoList 添加新的 SsoLink?
编辑:这是调试时的错误截图。
空引用异常看起来像是来自 ssoList.Links
在调用 AddRange
时 null
,因此需要将其初始化为 [=13= 的新实例] 在调用AddRange()
之前
Russ 的回答让我走上了正确的道路,我最终只需要将我的观点更改为:
@model List<SharedModels.Models.SsoLink>
而不是
@model SharedModels.Models.SsoLink
并取消 SsoLinks 模型。