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

标签 asp.net-mvc asp.net-mvc-3

我有一个疑问

用这句话: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/

相关文章:

jquery - Mvc Ajax 调用 Controller 不返回 statusText

jquery - 使用部分 View 和 Ajax 进行 ASP.NET MVC 客户端验证

asp.net-mvc - ASP.NET MVC RC2 - 为什么我不能使用正常的验证选项?例如必填字段验证器

asp.net-mvc-3 - mvc dropdownlistfor 未标记为必需,但仍然是必需的

asp.net-mvc - Orchard CMS 中的 IdentityPart 有什么用?

asp.net-mvc - 将 ASP 网站部署到 IIS 后,如何修复与 Access 数据库丢失的连接?

asp.net-mvc - 如何获得物理路径的服务器路径?

c# - Global.asax 中 Application_Start 的 StyleCop SP0100 错误

c# - 将 Javascript 变量传递给 MVC3 中的路由值

asp.net - 清楚 MVC3 中的助手?