我有一个Job
模型和StatusOnHold
模型。
我在StatusOnHold
模型中添加了导航属性Job
。
由于某种原因,当我将Job
模型保存为空的StatusOnHold
时,我仍然在StatusOnHoldId
模型的Job
中获得价值。
StatusOnHold
为空时,我试图在StatusOnHoldId
模型的Job
中接收 NULL 值。 StatusOnHold
不为空时,我正在尝试获取StatusOnHoldId
并将值保存在StatusOnHold
模型中(它现在正在那样工作)。非常感谢您。
这是我的模特...
public class StatusOnHoldViewModel
{
public int Id { get; set; }
public string Note { get; set; }
}
public class JobViewModel
{
[Key]
public int Id { get; set; }
public string JobNote { get; set; }
public JobStatus JobStatus { get; set; }
public CompanyViewModel Company { get; set; }
public CustomerViewModel Customer { get; set; }
public StatusOnHoldViewModel StatusOnHold { get; set; }
}
这是控制器...
public async Task<IActionResult> Create(JobViewModel jobViewModel)
{
if (ModelState.IsValid)
{
var job = _mapper.Map<Job>(jobViewModel);
var newjobId = await _jobRepository.AddAsync(job);
return RedirectToAction("details", new { id = newjobId });
}
return View();
}
这是视图...
<div class="form-group row">
<label class="col-sm-2 col-form-label"></label>
<div class="col-sm-10">
<div class="m-1">On-Hold</div>
<textarea asp-for="StatusOnHold.Note" style="height:86px; min-height:86px" class="form-control" placeholder="Reason..."></textarea>
<span asp-validation-for="StatusOnHold.Note" class="text-danger"></span>
</div>
</div>
答案 0 :(得分:0)
您没有 StatusOnHoldViewModel 的属性,仅导航属性将不起作用。
所以添加
public int StatusOnHoldViewModelId { get; set; }
到您的 JobViewModel
答案 1 :(得分:0)
StatusOnHoldId不会为空,并且总是有数据,如果您不在textarea中写笔记,它将看起来像{ "id":0,"note":null}
在jobViewModel`上起作用,这将创建一个新记录。
一种解决方法是,当StatusOnHold
为null时,可以将note
设置为null:
public async Task<IActionResult> Create(JobViewModel jobViewModel)
{
if (ModelState.IsValid)
{
if(jobViewModel.StatusOnHold.Note == null)
{
jobViewModel.StatusOnHold = null;
}
var job = _mapper.Map<Job>(jobViewModel);
var newjobId = await _jobRepository.AddAsync(job);
return RedirectToAction("details", new { id = newjobId });
}
return View();
}