我知道特殊参数{controller}
和{action}
,但我看到博客/帖子会引入特殊参数,例如{controller}/{action}/{*id}
。除星号外,还有哪些其他特殊字符可供使用,我将如何使用它们?
最重要的是,我对如何使用路径约束感到困惑。一个对我有意义的常见地图是
routes.MapRoute( "Blog",
"Blog/{d}/{m}/{y}",
new { controller = "Blog", action = "Post" },
new { d = @"\d{1,2}", m = @"\d{1,2}", y = @"\d{4}" }
);
在约束对象中, d , m 和 y 都对应于URL中的参数,这是有意义的。在我读过的一些博客上,当人们开始对不存在的参数施加限制时,我会被抛弃,例如
contentType = new ContentTypeConstraint(ConstraintContentType.JSON)
或
IsRootAction = new IsRootActionConstraint()
哪个对象定义为contentType
和IsRootAction
?除了这两个之外还有其他属性吗?
UPDATE
我已经做了一些搜索,我发现在引擎盖下new { controller = "Blog"}
被转换为RouteValueDictionary。这基本上只是简写。我很好奇的参数(IsRootAction和ContentType)只是字典的关键名称,仅此而已。
答案 0 :(得分:0)
操作约束要么在MVC框架中定义,要么由代码定义(最好在模型中),并实现MVC接口IRouteConstraint。
有关如何定义Action Constraint的示例,请参阅此答案,这特别针对您关于IsRootActionContraint的问题。
Having trouble with a simple MVC route
我没有看到{* ...}表示法,一般语法是每个卷括号的名称都是匹配网址中提取的参数。