- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在我的 Controller 中使用来自 MVC5 的属性路由。
题:
有没有办法控制 Controller 之间的属性路由优先级?
考虑以下
[Route("home/{action=index}/{username?}")]
public class HomeController : Controller
{
[Route("home/index/{username?}", Order = 1)]
[Route("home/{username?}", Order = 2)]
[Route("{username?}", Order = 3)]
public ActionResult Index()
{
// ... bunch of stuff
}
}
HomeController.Index()
应使用以下请求调用 action 方法:
[Authorize(Roles = "Member")]
[Route("profile/{action=index}")]
public class ProfileController : Controller
{
[Route("profile")]
public ActionResult Index()
{
}
}
ProfileController.Index()
应使用以下请求调用。
domain/profile
在 url 中,抛出歧义异常。
domain/{username}
之间好像有歧义和
domain/profile
.
routes.MapAttributeRoutes(config =>
{
config.AddRoutesFromController<ProfileController>();
config.AddRoutesFromController<HomeController>();
});
最佳答案
不,在 ASP.Net MVC 5.2.3 中不可能对 Controller 路由进行优先级排序。如果多个匹配,则忽略操作的顺序并抛出异常。
我已经通过从 https://aspnetwebstack.codeplex.com/SourceControl/latest 下载源代码验证了这一点。并检查函数 GetControllerTypeFromDirectRoute(如下)。从此函数发出的调用都没有对路由进行优先级排序,它们只是被发现并报告回来。如您所见,GetControllerTypeFromDirectRoute 只是引发了多个匹配。
一点都不好,但希望这会为其他人节省一些时间。
我放了一个手动映射的路线来避免这个问题。
private static Type GetControllerTypeFromDirectRoute(RouteData routeData)
{
Contract.Assert(routeData != null);
var matchingRouteDatas = routeData.GetDirectRouteMatches();
List<Type> controllerTypes = new List<Type>();
foreach (var directRouteData in matchingRouteDatas)
{
if (directRouteData != null)
{
Type controllerType = directRouteData.GetTargetControllerType();
if (controllerType == null)
{
// We don't expect this to happen, but it could happen if some code messes with the
// route data tokens and removes the key we're looking for.
throw new InvalidOperationException(MvcResources.DirectRoute_MissingControllerType);
}
if (!controllerTypes.Contains(controllerType))
{
controllerTypes.Add(controllerType);
}
}
}
// We only want to handle the case where all matched direct routes refer to the same controller.
// Handling the multiple-controllers case would put attribute routing down a totally different
// path than traditional routing.
if (controllerTypes.Count == 0)
{
return null;
}
else if (controllerTypes.Count == 1)
{
return controllerTypes[0];
}
else
{
throw CreateDirectRouteAmbiguousControllerException(controllerTypes);
}
}
关于asp.net-mvc-routing - MVC5 : Attribute Routing Precedence Among Controllers,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21809556/
这个问题已经有答案了: What is the difference between '@' and '=' in directive scope in AngularJS? (18 个回答) 已关闭
我正在尝试查找各组中值的 z 分数,例如在以下数据中 df: GROUP VALUE 1 5 2 2 1 10 2 20 1 7 在第 1 组中,值是
我有一个 MySQL 表,其中有 payment_date 行。我正在获取日期 X 和日期 Y 的行。我想打印每个日期出现的次数。 例如: payment_date 2011-07-25 2011-0
Entry 1 Delete Entry 2 Delete 我想将按钮放在它们之间。 这行不通: b
我有一个用于搜索和结果列表的抽象 Controller 支持类: @Controller @SessionAttributes("query") public abstract class Searc
我有一项任务,必须在消费者之间分配独特的资源。规则是: 每个使用者都有一组可以使用的资源类型, 每种资源都是独一无二的, 每个消费者必须接收n>0个资源, 所有资源都必须分配。 E. G。我们有这份消
import pandas as pd import numpy as np #Create sample df with following columns; iP,date,score,appOw
根据 EventBus doc ,EventBus用来传递线程的线程模式有4种: onEvent() PostThread Good for simple tasks onEventMainThrea
我一直在努力从博客、文章和视频中了解更多关于 Uncle Bob 的 Clean Architecture。 如果我要在此架构中使用数据库,那么 UI(作为 Web 或表单等框架)应该了解数据库的哪些
刚刚开始使用ApacheKafka(v3.5.1),目前只使用控制台。。所以,我创建了一个带有3个分区的主题,。Kafka-topics.sh--主题t_3--创建--引导--服务器本地主机:9092
刚刚开始使用ApacheKafka(v3.5.1),目前只使用控制台。。所以,我创建了一个带有3个分区的主题,。Kafka-topics.sh--主题t_3--创建--引导--服务器本地主机:9092
我正在使用以下规范的 Linux 机器上运行模拟。 Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Byte O
在阅读了查询优化技术后,我开始了解以下技术。 1. Indexing - bitmap and BTree 2. Partitioning 3. Bucketing 我了解了分区和分桶之间的区别,以及
我有 1 个包含 3 个模块的 Maven 项目: ./项目./项目节点./项目主控./项目通用 第一个只是允许我执行 mvn build 来一次构建所有 3 个模块。 我想将 -node 和 -ma
我有一个像下面这样的核心数据模型结构: Product > OrderProduct where the relationship (from Product to OrderProduct) is
我正在为我的部分程序做一些性能分析。我尝试使用以下四种方法来衡量执行情况。有趣的是,它们显示出不同的结果,我并不完全理解它们的差异。我的 CPU 是 Intel(R) Core(TM) i7-4770
有时我们需要在中打开的文件中进行搜索。 IntelliJ IDEA . 例如:class="redtext"通常我有大量打开的文件,手动搜索需要很长时间( Ctrl+F 在每个 html 文件中)。
我试图找出处理命名空间模型的最佳方法。这是我的项目中的模型: class Member < ApplicationRecord has_one :ledger, inverse_of: :memb
我在这里有一个小问题和一个疑问。我创建了一个页面,该页面在三个不同的占位符中添加了三个组件。此页面是为英文版创建的。我还需要这个页面和要在页面的德语版本中添加的组件。 我阅读了几篇文章,这些文章说明了
我将每个 MVP 三元组视为一个独立的组件。例如,View 实现了 IView 接口(interface),Presenter 当然只能通过 IView 知道 View。 我可以使组件尽可能可重用。现
我是一名优秀的程序员,十分优秀!