提问人:Baran 提问时间:6/11/2023 最后编辑:ndc85430Baran 更新时间:6/11/2023 访问量:43
列表对象引用 null
List Object Reference null
问:
我有一个 ProfileVM,其中包括:
public class ProfileVM
{
public ApplicationUser User { get; set; }
[NotMapped]
public IEnumerable<SelectListItem> JobsList { get; set; }
}
由于我有一个部分视图,允许我们更新用户帐户详细信息,因此在加载视图之前一切正常。视图已加载,DropDownList 也已加载。
这是我的观点代码:
[...]
<div class="col-lg-4">
<div class="form-group floating-label enable-floating-label show-label">
<label asp-for="User.JobFunction"> Job <span class="text-danger">*</span></label>
<select class="form-control select2" id="JobFunction" name="User.JobFunction">
<option value="">Select a job</option>
@foreach (var job in Model.JobsList)
{
<option value="@job.Value" selected="@(job.Value == Model.User.JobFunction)">@job.Text</option>
}
</select>
</div>
</div>
控制器如下:
[HttpGet]
public IActionResult Profile(string Id)
{
if (Id == null)
{
return NotFound();
}
var userFromDb = _context.ApplicationUser.Find(Id);
if (userFromDb == null)
{
return NotFound();
}
var profileVM = new ProfileVM
{
User = userFromDb,
JobsList = _unitOfWork.Job.GetJobsList() // Assuming you have a method to populate the job options
};
return View(profileVM);
}
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Profile(ProfileVM profileVM)
{
if (ModelState.IsValid)
{
if (profileVM.JobsList == null)
{
List<Job> jobs = _context.Jobs.ToList();
List<SelectListItem> jobsList = jobs.Select(job => new SelectListItem
{
Value = job.JobDescription_EN,
Text = job.JobDescription_EN
}).ToList();
profileVM.JobsList = jobsList;
}
//Save changes to the user
_unitOfWork.User.Update(profileVM.User);
_unitOfWork.Save();
return RedirectToAction(nameof(Index), "Home");
}
return View(profileVM);
}
问题是我在单击“更新按钮”时丢失了 JobsList 实例。 因此,我添加了以下代码,将另一个时间 jobsList 列表分配给 profileVM.JobsList:
if (profileVM.JobsList == null)
{
List<Job> jobs = _context.Jobs.ToList();
List<SelectListItem> jobsList = jobs.Select(job => new SelectListItem
{
Value = job.JobDescription_EN,
Text = job.JobDescription_EN
}).ToList();
profileVM.JobsList = jobsList;
}
我做错了什么,因为profileVM.JobsList仍然为空,并出现以下错误:
“NullReferenceException:对象引用未设置为对象的实例。”
蚂蚁 @foreach(Model.JobsList 中的 var 作业) { @job。发短信 }
?
感谢您的帮助!
答: 暂无答案
评论