为什么ASP.NET MVC5中的重载不可能?
我在控制器中有一个名为Index的Action.这可以像下面这样调用:
>没有参数 我有一个自定义属性,应该设置为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(); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – 如何从JavaScript访问ASPxTextBox的值
- 学习:正则表达式的基本语法
- asp.net – 在我的浏览器中测试Accept语言
- asp.net – 寻找用于呈现显示对象视图的表单的代码
- asp.net-mvc – 使用相同的密钥从Request.Files获取所有文件
- asp.net-mvc-routing – 如何在MapHttpRoute中设置默认命名
- ASP.NET开发服务器或本地主机IIS?
- asp.net – 为什么我的SqlDataSource的UpdateCommand不工作
- 如何在asp.net(C#)中创建动态页面?
- asp.net-mvc – 保持控制器瘦(太多的动作方法)
- asp.net-mvc – 如何在视图模型中更改隐式必需属
- asp.net – 可以在ajax工具包日历扩展器中添加“
- ASP.NET Core 找不到 npm指令异常
- asp.net – .NET 4.0实现OutputCacheProvider
- asp.net – 在用户代码中未处理Assert faild异常
- asp.net-web-api – WebAPI:403在发布网站后被禁
- [WCF]缺少一行代码引发的血案
- asp.net-mvc – DropDown列表onchange事件和MVC中
- asp.net-mvc – ASP MVC Razor视图扩展方法,如何
- 如何使用asp.net 5项目运行nunit测试,特别是使用