我有一个疑问
用这句话:filterContext.RouteData.Values["MyRouteValue"]
key应该在路由表的Route中声明,对吗?
我的意思是,应该在路由表中类似:{MyRouteValue}/
如果我有一个像/Controller/Action?MyRouteValue=XXXXXXX 这样的请求,我会从 filterContext.RouteData.Values["MyRouteValue"]
获取 null。这意味着如果我想获取值,我必须使用 filterContext.Controller.ValueProvider.GetValue("publicationUrlTitle").AttemptedValue 代替?
提前致谢。
问候。
何塞。
最佳答案
To use this sentence: filterContext.RouteData.Values["MyRouteValue"] the key should be declared in a Route in the route table right?
是的。
If i have a request like /Controller/Action?MyRouteValue=XXXXXXX im getting null from filterContext.RouteData.Values["MyRouteValue"]. This means that if i want to get the value i have to use filterContext.Controller.ValueProvider.GetValue("publicationUrlTitle").AttemptedValue istead?
是的,使用ValueProvider
或从filterContext.HttpContext.Request["MyRouteValue"]
读取它。使用 ValueProvider 的优点是它可以在很多地方查找:路由数据、GET 查询字符串参数、POST 参数、自定义值提供程序(例如 ASP.NET MVC 3 中的 JSON 值提供程序)...
访问 .AttemptedValue
属性时请务必小心,因为如果找不到 MyRouteValue
,您可能会收到 NRE
。
关于asp.net-mvc - 关于 Asp.net MVC3 上的 RouteData 和 ValueProvider 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6998809/