1

なぜこのエラーが発生するのかわかりません:

オブジェクト参照がオブジェクト インスタンスに設定されていません。

いくつかの組織を含むデータベースがあり、各組織は複数のドメインを持つことができます。私が設定した方法は、ドメインを削除するための通常の actionLink だけを持つことです。コードは次のようになります。

public ActionResult DeleteDomain(OrganizationDomainAddressView dd)
    {
        var org = OrganizationRepo.GetByID(dd.OrganizationID);
        if (ModelState.IsValid)
        {
            org.DomainAddresses.Remove(new OrganizationDomainAddress(dd.OrganizationID, dd.DomainAddress));
            OrganizationRepo.Delete(org);
        }
        OrganizationView orgInfo = (OrganizationView)Mapper.DynamicMap(org, typeof(Organization), typeof(OrganizationView));
        var domainList = orgInfo.DomainAddresses;
        var ACD = new OrganizationDomainAddressView();
        ViewData["ACD"] = ACD;
        ViewBag.OrganizationID = dd.OrganizationID;
        return PartialView("_EmailDomainPartial", domainList);
    }

ここに私が取り組んでいるビューがあります:

@model IEnumerable<AdminTool.Models.ViewModel.OrganizationDomainAddressView>
@using AdminTool.Models.ViewModel;
@{
OrganizationDomainAddressView ACD = (OrganizationDomainAddressView) ViewData["ACD"];
}

<div id="domains">
@foreach (var item in Model)
{
    <div class="item">
        @item.DomainAddress &mdash; @Html.ActionLink("Delete", "DeleteDomain", "Organizations", new { dd = item.DomainAddress })
    </div>
}
<div class="item">
    @Html.Hidden("OrganizationID", (int)ViewBag.OrganizationID)
</div>
@Html.Partial("_EmailDomainAddPartial", ACD)
</div>

そしてビューモデル:

public class OrganizationDomainAddressView
{
    public OrganizationDomainAddressView(string domainAddress, int organizationId)
    {
        DomainAddress = domainAddress;
        OrganizationID = organizationId;
    }

    public OrganizationDomainAddressView()
    { }

    [AtLeastOneRequired(ErrorMessageResourceType = typeof(AdminResource), ErrorMessageResourceName = "OrganizationEmailDomainRequired")]
    [Display(ResourceType = typeof(AdminResource), Name = "OrganizationValidEmailDomain")]
    [RegularExpression(@"@[a-z0-9.-]+\.[a-z]{2,4}", ErrorMessageResourceType = typeof(AdminResource), ErrorMessageResourceName = "OrganizationEmailFormatError")]
    public string DomainAddress { get; set; }

    public int OrganizationID { get; set; }
}

コードは、次の行のコントローラーでエラーが発生しています。

org.DomainAddresses.Remove(new OrganizationDomainAddress(dd.OrganizationID, dd.DomainAddress));

これがなぜなのかわかりません。どんな助けでも素晴らしいでしょう!

4

1 に答える 1

1

エラーが発生した行に基づいて、コードの次の部分が null であるかどうかをデバッガーで確認します。

  • 組織
  • org.ドメインアドレス

dd が設定されていない場合、エラーは既にドーム行の上に表示されます。実装によっては、入力値の 1 つが null の場合、OrganizationDomainAddress のコンストラクターが NullReferenceException をスローすることがあります。

于 2013-11-11T18:14:12.403 に答える