我可以用一个可以为空的变量做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检查的组合,以返回不同的视图,或者我最好实现一个解决方案,如在这个答案。
虽然最后一个参数是可选的,但是如果没有id参数,映射引擎不会为路由找到适合的Action
-因此出现错误。您有两种可能——要么使用您描述的方式,要么使用默认操作:
public ActionResult Details ()
{
return View(); //default view for this controller, could be a redirect as well
}
请记住,如果您的id
是可空的(例如,在string
的情况下,任何Nullable<T>
),这将不起作用,因为映射引擎会发现模棱两可的过载。在这种情况下,没有办法绕过null
检查。