基本上,我有一个MVC项目,我只有默认路由。
(问题编辑后经过测试并重新阅读我的问题,我确定错误只是因为整数不能为空)
我已经在这里阅读了有关重载的复杂答案,但是如果我想为页面调用提供两个不同的结果,比如说如果它是null而另一个是传递请求,那么以下是否足够?
public ActionResult Details(int? id)
{
if(id != null)
id=1;
return View(id);
}
然后可以将其扩展到更复杂的情况,例如public ActionResult Details(int? id, string bla, string bla2)
,并且只需要使用空检查的组合来返回不同的视图,或者我最好实现一个解决方案,例如在this answer上。< / p>
答案 0 :(得分:3)
虽然最后一个参数是可选的,但是映射引擎没有为没有id参数的路由找到Action
- 因此错误。您有两种可能性 - 无论是您描述的方式,还是通过默认操作:
public ActionResult Details ()
{
return View(); //default view for this controller, could be a redirect as well
}
请注意,如果您的id
是可以为空的(例如string
,例如Nullable<T>
),则无法使用此功能,因为映射引擎会找到暧昧的超载。在这种情况下,null
检查无法解决。