我可以使用可以为null的变量进行MVC方法重载吗?

时间:2011-04-30 12:35:51

标签: c# asp.net-mvc-3

基本上,我有一个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>

1 个答案:

答案 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检查无法解决。