为什么ASP.NET MVC5中的重载不可能?

前端之家收集整理的这篇文章主要介绍了为什么ASP.NET MVC5中的重载不可能?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在控制器中有一个名为Index的Action.这可以像下面这样调用

>没有参数
>使用custon enum
>使用日期时间

我有一个自定义属性,应该设置为2.和3.,但不是1.
所以我尝试了以下方法

public ActionResult Index() {
        return View();
    }

    [MyCustomAttribute]
    public ActionResult Index(StatusEnum status) {
        return View();
    }

    [MyCustomAttribute]
    public ActionResult Index(DateTime date) {
        return View();
    }

这似乎不可能,我总是得到一个错误,索引是模棱两可的.但我真的不明白为什么:动作有不同的参数,所以用参数区分它们应该没问题.

当我尝试这样的事情时,我得到了同样的错误

public ActionResult Index() {
        return View();
    }

    [MyCustomAttribute]
    public ActionResult Index(StatusEnum status,DateTime date) {
        return View();
    }

在这种情况下,它应该是真正清除的,没有问题来处理没有参数的所有请求到第一个Action而其余的请求到第二个Action.我觉得这很奇怪,因为在原生C#中,制作这样的重载绝对没有问题.

第二点:当重载是出于任何不可能的原因时,我该如何处理?排除没有参数的Index-Action(如果可能)是没有选项的,因为我也在其他控制器中使用该属性,并且应该处理所有Index-Actions.

解决方法

当我有这个网址时:

http://www.test.com/

您认为这条路线会带您到哪里?它可以明显地进入Index()动作,但为什么它不能进入​​Index(StatusEnum status,DateTime date)动作呢?这两个参数都可以为空,因此它们只是null.

关键是路由引擎不知道你想要什么,也许你想要有空参数,也许不是.

你可以尝试这样的事情:

public ActionResult Index() {
    return View();
}

[Route("SetStatus/{status}")]
public ActionResult Index(StatusEnum status) {
    return View();
}

[Route("SetDate/{date}")]
public ActionResult Index(DateTime date) {
    return View();
}
原文链接:https://www.f2er.com/aspnet/714125.html

猜你在找的asp.Net相关文章