我能用一个可能为空的变量来进行MVC方法的重载吗?

20 浏览
0 Comments

我能用一个可能为空的变量来进行MVC方法的重载吗?

简单来说,我有一个MVC项目,只有默认路由。

(在测试和重新阅读我的问题后,我确定错误只是因为整数不能为null)

我在这里阅读了一些复杂的答案关于重载,但是如果我想要针对页面调用有两个不同的结果,比如如果为空则一个结果,如果传递了一个请求则另一个结果,以下代码是否足够?

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

然后,这个可以扩展到更复杂的情况,比如`public ActionResult Details(int? id, string bla, string bla2)`,并且只需组合空检查来返回不同的视图,或者我最好实现像这个答案上的解决方案。

0
0 Comments

在使用MVC方法重载时,如果一个变量可以为空,可能会出现问题。当最后一个参数是可选的时候,映射引擎在没有包含id参数的路由中找不到适合的操作,从而导致错误。解决这个问题有两种可能性 - 要么按照你描述的方式,要么创建一个默认的操作。但是需要注意的是,如果id是可为空的(例如,对于字符串,任何Nullable类型),这种方法将无法工作,因为映射引擎将找到模糊的重载。在这种情况下,无法避免对null进行检查。

0