为什么dataTokens在Route?

Sam*_*ath 7 c# routes asp.net-mvc-2

 context.MapRoute("authorized-credit-card", "owners/{ownerKey}/authorizedcreditcard/{action}",
 new { controller = "authorizedcreditcard", action = "index" },
 new { ownerKey = nameFormat }, dataTokens: new { scheme = Uri.UriSchemeHttps });
Run Code Online (Sandbox Code Playgroud)

在我的路线文件中,我有以上的路线.

那么,任何人都可以告诉我这是什么意思 dataTokens: new { scheme = Uri.UriSchemeHttps

dataTokens在控制器的动作方法中使用上述内容?

Luk*_*sik 8

根据文件:

您可以使用DataTokens属性来检索或分配与路径关联的值,这些值不用于确定路由是否与URL模式匹配.这些值将传递给路由处理程序,在那里它们可用于处理请求.

所以DataTokens是一种可以随路径传递的附加数据.预定义了3个DataToken的键(下面的类来自ASP.NET MVC 4的源代码,但在版本2中使用了相同的键):

internal class RouteDataTokenKeys
{
    public const string UseNamespaceFallback = "UseNamespaceFallback";
    public const string Namespaces = "Namespaces";
    public const string Area = "area";
}
Run Code Online (Sandbox Code Playgroud)

我不认为框架使用名为"scheme"的DataToken,因此很难回答你的问题.您可能希望搜索自定义应用程序代码,DataTokens["scheme"]并查看需要它的位置和原因.

编辑:

我发现了一篇关于"向ASP.NET MVC路由添加HTTPS/SSL支持"的文章.有一个使用"scheme"数据令牌的例子.所以我很确定你的应用程序以同样的方式使用它.