加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

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

发布时间:2020-12-16 07:25:00 所属栏目:asp.Net 来源:网络整理
导读:我在控制器中有一个名为Index的Action.这可以像下面这样调用: 没有参数 使用custon enum 使用日期时间 我有一个自定义属性,应该设置为2.和3.,但不是1. 所以我尝试了以下方法: public ActionResult Index() { return View(); } [MyCustomAttribute] public
我在控制器中有一个名为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();
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读