我正在尝试验证非常简单的方法,我得到的值'null'对Nullable`1错误无效。
[ValidateModel]
public IEnumerable<SomeData> Get(bool? showExtra = null)
{
return this.MockDataManager.ShowData(showExtra);
}
ValidateModel属性是:
public override void OnActionExecuting(HttpActionContext actionContext)
{
if (actionContext != null && actionContext.ModelState.IsValid == false)
{
actionContext.Response = actionContext.Request.CreateErrorResponse(
HttpStatusCode.BadRequest, actionContext.ModelState);
}
}
现在,如果我用/ true和/ false调用方法,它就可以了。如果我用/调用方法也可以工作但是如果我用/ null验证调用失败并且出现错误消息值'null'对Nullable`1无效。 如何解决这个问题?
答案 0 :(得分:3)
用/调用它是要走的路。将它调用为/ null不是您想要做的。
这是幕后发生的事情:
/false
OK, let's see if I can convert that into a bool. Yes, I can.
/true
OK, let's see if I can convert that into a bool. Yes, I can.
/
OK, let's see if I can convert that into a bool. No, I can't, so use the default
value specified in the method arguments.
/null
OK, let's see if I can convert that into a bool. No, I can't, so throw an
exception.