在ASP.NET Core 2.2控制器方法中实例化实体时,空对象引用

时间:2019-05-02 16:41:31

标签: c# asp.net asp.net-core model-view-controller entity-framework-core

我的视图中有一个正在解析字符串输入的表单。在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(已在调试中确认)。

0 个答案:

没有答案