我收到此错误:
值不能为空
我有一个引用多个模型的viewmodel。
可以看出,html帮助器是强类型的。
在控制器中的后期操作中,它接收viewmodel。
我在POST
有多种情况,
一种情况是保存viewmodel中引用的(一个)表的某些字段,
其他情况下将某些字段保存到viewmodel中引用的(多个)表中
我添加了一个断点并跟踪了代码,ModelState
不会返回任何空值,但是当调试器到达var sod_request = new SOD_REQUEST
时,它不会进入代码块并抛出{{ 1}}错误,指的是我不想在第一种情况下将数据发布到的另一个模型的属性。
我使用万无一失的库在viewmodel中进行了验证。
我得到“值不能为空”的属性具有'Value cannot be null'
验证属性
我发布了RequiredIfFalse
的所有not null
列
在同一操作的Get方法中,我映射了所有模型的所有属性
SOD_REQUEST
}
我希望仅将我映射的属性保存到一张表中
为什么要求另一个模型中的字段具有值? 是因为我使用的是强类型视图吗?
答案 0 :(得分:0)
当执行新代码行时,SOD_REQUEST将执行以下所有操作:
WS_REQUEST_ID = TempData["SODRequestID"].ToString(),
CREATION_DATE = DateTime.Now.Date,
INITIATOR_ID = (Int32)TempData["InitiatorID"],
INITIATOR_NAME = TempData["InitiatorName"].ToString(), //may remove later
SERVICE_TYPE_ID = 1,
INITIATOR_COMMENTS = vm.InitiatorComments,
DELEGATED_EMPLOYEE_ID = vm.DelegatedTeamMemberId,
IS_DELEGATED = vm.IsDelegated,
REQUEST_STATUS = (Int32)CommonClasses.RequestStatus.DELEGATED
我猜测TempData [“ SODRequestID”]或TempData [“ InitiatorName”]为空。如果是这样,请轻松解决:
WS_REQUEST_ID = TempData["SODRequestID"]?.ToString(),
INITIATOR_NAME = TempData["InitiatorName"]?.ToString(), //may remove later
请注意?我加了。
答案 1 :(得分:0)
var s_request = new S_REQUEST(
{
REQUEST_ID = TempData["SRequestID"].ToString(),
CREATION_DATE = DateTime.Now.Date,
INITIATOR_ID = (Int32)TempData["InitiatorID"],
SERVICE_TYPE_ID = 1
});
使用此方法是因为构造函数需要()括号
答案 2 :(得分:0)
您应该在分析数据之前检查是否为空
REQUEST_ID = (TempData["SRequestID"] != null)? TempData["SRequestID"].ToString() : TempData["SRequestID"],
INITIATOR_ID = (TempData["InitiatorID"] != null)? Int32.Parse(TempData["InitiatorID"]):TempData["InitiatorID"],