在ASP.NET MVC应用程序中,当我们在Visual Studio中构建控制器时,我们会得到默认操作:
在上面,有一些参数可以为空(int? id
):详细信息,编辑(GET版本),删除,删除确认。然后在至少一些中,有以下代码来确保ID不为空:
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
所有这些行动都需要身份证;它不是可选的。您无法显示任何内容的详细信息或删除任何内容等。此外,如果它们为空,我们将生成BadRequest
状态代码。
那么为什么这些参数不能以非可空整数开头呢?
答案 0 :(得分:3)
我相信这是因为int
的默认值是0
。如果您按照建议将其设置为int id
,则模型绑定器会为您提供默认值0
,这意味着您无法区分是否实际提供了0
或是否它只是违约。
我错误地认为这样的简单参数的默认值为0 - 请参阅注释。