在ASP.NET MVC应用程序,当我们脚手架在Visual Studio中的控制器,我们得到的默认操作:为什么在某些默认MVC操作中id可为空?
- 指数
- 创建
- 删除
- 编辑
- 详细
上面几个参数有一个可为空的id(int? id
):Details,Edit(GET version),Del ete,DeleteConfirmed。然后,至少在一些,有下面的代码,以确保该ID不为null:
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
所有这些操作都需要一个ID;它不是可选的。您不能显示任何内容或不删除任何内容等。另外,如果状态码为空,我们将生成一个BadRequest
状态码。
那么,为什么这些参数不是可以为空的整数呢?
Url是字符串,“id”是一个int。当路由中的参数不能转换为int时会发生什么?是否应该是一些一般性错误,或者您的控制器是否应该指定如何处理无效(即空)的ID? – maccettura
谢谢,@maccettura。但如果它是空的,我们应该抛出一个异常让用户知道。还是应该通过Visual Studio为我们生成的检查来检测它? – Alex
你应该总是抛出异常吗?是否有应该发生的特殊处理?它应该被记录?包含在MVC代码中的样板代码仅仅是一个建议,并不是必需的。 – maccettura