我目前在不同的视图中使用此方法,没有错误,但现在在新视图中给出错误 -
System.NullReferenceException:“未将对象引用设置为对象的实例。”
Microsoft.AspNetCore.Mvc.Razor.RazorPage.Model.get 返回 null。
System.NullReferenceException HResult=0x80004003 Message=未将对象引用设置到对象的实例。源=网站 StackTrace:atAspNetCoreGenerateDocument.Views_Post_Create.<< ExecuteAsync >b__53_19>d.MoveNext() in G:\...\Views\Post\Create.cshtml:第 54 行
我正在使用数据库表作为我的下拉列表。我首先尝试使用
IEnumerable
但它导致了同样的错误。我使用谷歌但无法解决我的错误。这是我的代码-
型号:
public class PostCategoryModel
{
[Key]
public int Id { get; set; }
public string CategoryName { get; set; }
}
视图模型:
public class CreatePostViewModel
{
// Code before
public List<PostCategoryModel>? PostCategoryList { get; set; }
}
查看:
<div class="col-md-12 mb-3">
<label asp-for="PostCategory" class="form-label">Post Category</label>SelectList(Model.PostCategoryList,"Value", "Text"))" class="form-select" required>*@
<select asp-for="PostCategory" class="form-select">
<option hidden selected>Open this select menu</option>
@foreach (var item in Model.PostCategoryList)
{
<option value="@item.Id">@item.CategoryName</option>
}
</select>
<div class="invalid-feedback">
Please select a valid category.
</div>
</div>
在将视图模型发送到视图之前,请确保视图模型已正确填充。 在您想要返回视图的 httpget 操作中,请确保视图模型填充如下:
var viewModel = new CreatePostViewModel();
viewModel.PostCategoryList = GetPostCategories(); // Fetch data from db
return View(viewModel);
还有,因为List
@if (Model.PostCategoryList != null && Model.PostCategoryList.Any())
{
<select asp-for="PostCategory" class="form-select">
<option hidden selected>Open this select menu</option>
@foreach (var item in Model.PostCategoryList)
{
<option value="@item.Id">@item.CategoryName</option>
}
}
}
else
{
<p>No categories available.</p>
}
并参考您的演讲“我目前在不同的视图中使用此方法,没有错误”,也许在该方法中,您初始化了列表
public class CreatePostViewModel
{
public List<PostCategoryModel> PostCategoryList { get; set; }
public CreatePostViewModel()
{
PostCategoryList = new List<PostCategoryModel>();
}
}