我的视图中有一个正在解析字符串输入的表单。在controller方法内,我通过用逗号分隔符拆分字符串来解析字符串,然后尝试实例化“ Asset”类实例,同时将Asset的字符串属性设置为解析后的字符串的输出。出于某种原因,即使我事先实例化了资产实例,但尝试将其添加到模型的实体列表属性时,却不断遇到资产参考上的空引用异常。
我已经确保Asset实体属性可以为空,以防万一它与EF有关。
控制器代码
[HttpPost]
public IActionResult Create(Incident incident)
{
incident.CreateType = "Manual";
var attackerAssets = UtilityMethods.parseAssets(incident.AttackerIpString, incident.Id);
foreach(Asset asset in attackerAssets)
{
incident.AttackerIps.Add(asset);
}
context.Add(incident);
context.SaveChanges();
return RedirectToAction("Index", "Home");
}
parseAssets方法
public static Asset[] parseAssets(string attackerIpsString, long Id)
{
string[] attackerips = attackerIpsString.Split(',');
Asset[] assetArray = new Asset[attackerips.Length];
foreach (string ip in attackerips)
{
Asset newAsset = new Asset()
{
IpAddress = ip,
Disposition = false,
HostName = ip,
};
assetArray.Append(newAsset);
}
return assetArray;
}
资产模型
public class Asset
{
public int Id { get; set; }
public string HostName { get; set; }
public string IpAddress { get; set; }
public bool? Disposition { get; set; }
}
我正在解析的事件模型属性
public string AttackerIpString { get; set; }
public List<Asset> AttackerIps { get; set; }
应该发生的是,控制器应在model.AttackerIps列表中添加两个Asset对象。但是这些Asset对象为null(已在调试中确认)。