Nevysvětlitelné a protichůdné NullReferenceExecption (objekt není nastaven na instanci objektu) v úložišti vzoru

hlasů
0

Stávající projekt:

Krátký a sladký to: Sledované úložiště vzor odkazované výše. Pokud nejste obeznámeni s tím, budete pravděpodobně nebudou moci, aby mi pomohl.

Takže mám úložiště záznamu:

// Populating the SelectList
public Task<List<IceRelationship>> GetIceRelationshipListAsync() => Set.ToListAsync();

A ve zkušební stránky (s cílem zajistit, že jsem stále při smyslech) Jsem schopen zobrazit seznam dokonale (prokazující, že _unitOfWorkvolání práce), zavoláním na seznam:

public ActionResult TestIce() {
  var list = _unitOfWork.IceRelationshipRepository.GetIceRelationshipListAsync().Result;
  return View(list);
}

A poté ji dumping na stránce:

@model List<Fredex.Domain.Entities.IceRelationship>
@foreach(var item in Model) {
  <dl>
    <dt>@item.IceRelationshipId</dt>
    <dd>@item.IceRelationshipName</dd>
  </dl>
}

To funguje skvěle !!

Nicméně, tento seznam má k naplnění SelectList ve formách na celém webu. Takže v nejlepším zájmu DNR, jsem udělal můj nejlepší abstraktní ven.

Formuláře mají samy SelectLists:

@Html.DropDownListFor(x => x.IceRelationshipId, Model.IceRelationshipList, « ‹ Select › », htmlAttributes: new { @class = form-control required })

kde SelectList samotný je naplněn pomocí modelu:

public class IceViewModel {
  public Guid? IceId { get; set; }
  public Guid IceRelationshipId { get; set; }
  public string Title { get; set; }
  [DisplayName(@Honorific)]
  public Guid? PrefixId { get; set; }
  [DisplayName(@First Name)]
  public string FirstName { get; set; }
  [DisplayName(@Last Name)]
  public string LastName { get; set; }

  public IEnumerable<SelectListItem> IceRelationshipList => SelectLists.IceRelationshipList();
  public IEnumerable<SelectListItem> PrefixList => SelectLists.PrefixList();
}

A model je SelectListItem je obydlená z řadiče s názvem SelectLists:

public static IEnumerable<SelectListItem> IceRelationshipList() {
  var list = _unitOfWork.IceRelationshipRepository.GetIceRelationshipListAsync().Result;
  var select = list.Select(x => new SelectListItem { Text = x.IceRelationshipName, Value = x.IceRelationshipId.ToString() });
  return select;
}

Problém je, že to je místo, kde všechno jde špatně špatně. Volání _unitOfWorkje to, co je označen jako hodnota null, a spouští „Objekt není nastaven na instanci objektu“, i když je napájen z přesně stejného úložiště vstupu jako testovací stránku, která zobrazuje celý seznam vztahů ,

Výjimka typu ‚System.NullReferenceException‘ došlo v Boilerplate.Web.Mvc5.Sample.dll ale nebyl zpracován v kód uživatele

Když jsem se zkoumat proměnné list, mohu potvrdit, že to je opravdu ve formě List<IceRelationship>, což znamená, že by měl být schopen provést podrobné .Select()na to, ale pouze v případě, že není null. Bohužel, zdá se, že je null, i když na druhé (non-forma) opatřeních, která není null !!

Nějaký nápad, proč jsou věci tak rozporuplné ?? Proč je _unitOfWorktak zjevně vyplněn mé testovací stránky, ale null v mém SelectListřadič?


Edit: @marc_s - říká, že se jedná o duplicitní nepomůže, jestli nemám absolutně nulový ponětí o tom, jak je to duplikát.

Dívám se na dvou identických prohlášeních _unitOfWork. Jeden přivádí zpět na seznam. Druhý vrací null. Mám nulovou ponětí, jak, proč a kde je mezi nimi rozdíl. Pokud je mi známo, je funkcionalita stejná.

Položena 18/03/2017 v 08:25
uživatelem
V jiných jazycích...                            

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more