如何从Page.RouteData.DataTokens获取RouteValueDictionary值

时间:2013-12-07 14:28:55

标签: c# asp.net

如何从Page.RouteData.DataTokens获取RouteValueDictionary值

我的代码:

routes.MapPageRoute("NewsDetails", "NewsDetails/{id}/{title}",
                    "~/NewsDetails.aspx", false,
                     new RouteValueDictionary { { "id", 0 },
                     { "title", string.Empty } });

我想获取id和title,因为Page.RouteData.Values不起作用

enter image description here

感谢

3 个答案:

答案 0 :(得分:1)

我也有这个问题; Page.RouteData.Values未返回任何值,但我可以在DataTokens下看到传递的值。

事实证明routes.EnableFriendlyUrls正在弄乱我的路线映射,所以在我阅读this article by Hanselman - >之后并使用Request.GetFriendlyUrlSegments()来获取值。

它有效,但我不想迭代所有值来分配它们(正如文章中所建议的那样)。因此,我更改了路由映射的顺序(在Request.GetFriendlyUrlSegments()下),而不是使用RouteConfig.cs,以便在注册了所有其他路由后注册routes.EnableFriendlyUrls(settings);

只有在我改变了路线的顺序之后,才从Page.RouteData.Values

获取了我的值

答案 1 :(得分:0)

尝试改为使用Page.RouteData.Values

答案 2 :(得分:0)

我必须使用以下内容来访问特定的键:

template <class ContainerType>
concept PushBackContainer = requires(ContainerType a)
{
    requires SequenceContainer<ContainerType>;
    { a.push_back(typename ContainerType::const_reference& v) };
    { a.push_back(typename ContainerType::value_type&& v) };
    // How do you define a variable templated function: 
    { template< class... Args > a.emplace_back(Args&&... args) };
}