asp.net-core - 将导航属性保存为空
问题描述
我有一个Job
模型和StatusOnHold
模型。StatusOnHold
我在Job
模型中添加了导航属性。出于某种原因,当我Job
用空保存模型时StatusOnHold
,我仍然StatusOnHoldId
在Job
模型中获得价值。
- 当
StatusOnHold
为空时,我试图在模型中接收NULL值。StatusOnHoldId
Job
- 当
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>
解决方案
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();
}
推荐阅读
- ios - iPhone XR / XS / iPad Pro 11 上 Cordova 项目的屏幕尺寸不正确
- json - 如何从 JSON 对象中获取 id
- javascript - 在一个屏幕上排列图表
- react-native - Jest 遇到带有 import 语句的意外令牌
- c - /usr/bin/ld: 在 Makefile 中找不到 -lioutil
- jms - Apache ActiveMQ Artemis 持久订阅 TTL
- python - solve_ivp 返回 odeint 的不同结果?
- c - 如何将值插入哈希表上的链表成员
- asp.net-mvc - 如何知道页面是否被剃须刀页面内的get或post方法调用
- python - 滚动线pyqtgraph