我可以用一个可以为空的变量做MVC方法重载吗?

本文关键字:变量 MVC 方法 重载 一个 我可以 | 更新日期: 2023-09-27 17:54:10

基本上,我有一个MVC项目,我只有默认路由。

(问题编辑为测试和重新阅读我的问题后,我确信错误只是因为整数不能为空)

我已经阅读了复杂的答案在这里关于重载,但如果我想有两个不同的结果为一个页面调用,说一个,如果它是空的,另一个,如果它是传递一个请求,下面是足够的吗?

    public ActionResult Details(int? id)
    {
        if(id != null)
            id=1;
        return View(id);
    }

,然后这可以扩展到更复杂的情况,如public ActionResult Details(int? id, string bla, string bla2),只是有null检查的组合,以返回不同的视图,或者我最好实现一个解决方案,如在这个答案。

我可以用一个可以为空的变量做MVC方法重载吗?

虽然最后一个参数是可选的,但是如果没有id参数,映射引擎不会为路由找到适合的Action -因此出现错误。您有两种可能——要么使用您描述的方式,要么使用默认操作:

public ActionResult Details ()
{
  return View(); //default view for this controller, could be a redirect as well
}

请记住,如果您的id是可空的(例如,在string的情况下,任何Nullable<T>),这将不起作用,因为映射引擎会发现模棱两可的过载。在这种情况下,没有办法绕过null检查。