既存のデータベースから読み込むためにEntity Framework Coreを使用するASP.NET Core Webアプリケーションを作成しました。私は、私のFacilityRevenueテーブルに新しいエントリを作成するビューで、選択したコントロールにFacilityNamesのリストを設定したいと思います。ASP.NET Core Helper Throwsオブジェクト参照がオブジェクトのインスタンスに設定されていません
私は次のようにFacilityRevenueコントローラがあるのメソッドを作成します。
<label asp-for="FacilityName" class="col-md-2 control-label"></label>
<div class="col-md-10">
<select asp-for="FacilityId" asp-items="ViewBag.FacilityID">
<option value="">-- Select Facility --</option>
</select>
<span asp-validation-for="FacilityName" class="text-danger" />
</div>
次のように私のFacilityRevenueモデルは次のとおりです:
public partial class FacilityRevenue
{
public string FacilityName { get; set; }
public DateTime Date { get; set; }
public decimal? TotalInvoices { get; set; }
public decimal? TotalRevenue { get; set; }
public int RecordId { get; set; }
public int? FacilityId { get; set; }
public virtual FacilityMaster Facility { get; set; }
}
ビューは、次のマークアップが含ま作成
public IActionResult Create()
{
PopulateFacilityDropDownList();
return View();
}
private void PopulateFacilityDropDownList
(object selectedFacility = null)
{
var facilityQuery = from f in _context.FacilityMaster
orderby f.FacilityName
select f;
ViewBag.FacilityID = new SelectList(facilityQuery.AsNoTracking(), "FacilityID", "FacilityName", selectedFacility);
}
私を
スタックトレースは次のとおりです。
System.NullReferenceException: Object reference not set to an instance of an
object.
at Microsoft.AspNetCore.Mvc.Rendering.MultiSelectList.Eval(Object container,
String expression)
at Microsoft.AspNetCore.Mvc.Rendering.MultiSelectList.
GetListItemsWithValueField()
at Microsoft.AspNetCore.Mvc.Rendering.MultiSelectList.GetEnumerator()
at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
at Microsoft.AspNetCore.Mvc.ViewFeatures.DefaultHtmlGenerator.
GenerateGroupsAndOptions(String optionLabel, IEnumerable`1 selectList,
ICollection`1 currentValues)
at
Microsoft.AspNetCore.Mvc.ViewFeatures.
DefaultHtmlGenerator.GenerateSelect(ViewContext viewContext, ModelExplorer
modelExplorer, String optionLabel, String expression, IEnumerable`1
selectList, ICollection`1 currentValues, Boolean allowMultiple, Object
htmlAttributes)
at
Microsoft.AspNetCore.Mvc.TagHelpers.SelectTagHelper.Process(TagHelperContext
context, TagHelperOutput output)
at
Microsoft.AspNetCore.Razor.TagHelpers.TagHelper.
ProcessAsync(TagHelperContext context, TagHelperOutput output)
at Microsoft.AspNetCore.Razor.Runtime.TagHelpers.TagHelperRunner.
<RunAsync>d__0.MoveNext()
上記のエラーを解決し、選択コントロールを機能リストで水分補給する機能を達成するにはどうすればよいですか?
エラーがViewBag.FacilityID'が 'null'なのでは'ので、あなたがフォームを送信するので(おそらく、その後、ビューを返しますが、 'ViewBag'プロパティを再増殖するのを忘れています。しかし、あなたのバインディングとSelectListのプロパティに同じ名前を使用しないでください –