关于Asp.net MVC3上的RouteData和ValueProvider的问题

Jos*_*e3d 2 asp.net-mvc asp.net-mvc-3

我有一个疑问

要使用这句话:filterContext.RouteData.Values["MyRouteValue"]密钥应该在路由表中的Route中声明对吗?

我的意思是,应该在路由表中: {MyRouteValue}/

如果我有像/ Controller/Action这样的请求?MyRouteValue = XXXXXXX即可获得null filterContext.RouteData.Values["MyRouteValue"].这意味着,如果我想我必须使用filterContext.Controller.ValueProvider.GetValue("publicationUrlTitle").AttemptedValue istead价值?

提前致谢.

问候.

何塞.

Dar*_*rov 6

要使用这句话:filterContext.RouteData.Values ["MyRouteValue"]键应该在路由表中的Route中声明对吗?

是.

如果我有像/ Controller/Action这样的请求?MyRouteValue = XXXXXXX我从filterContext.RouteData.Values ["MyRouteValue"]获取null.这意味着,如果我想我必须使用filterContext.Controller.ValueProvider.GetValue("publicationUrlTitle").AttemptedValue istead价值?

是的,使用ValueProvider或阅读filterContext.HttpContext.Request["MyRouteValue"].使用ValueProvider的优点是它可以在很多地方查找:路由数据,GET查询字符串参数,POST参数,自定义值提供程序,例如ASP.NET MVC 3中的JSON值提供程序,...

当你访问该.AttemptedValue物业时要小心,因为NRE如果MyRouteValue无处可寻,你可能会得到一个.