【发布时间】:2015-07-30 15:05:12
【问题描述】:
我正在构建一个应用程序,其中我的路由将取决于存储在 cookie 中的值。我想动态获取该 cookie 值以用作我的 RouteConfig 中的默认操作。这可能吗?这是我的代码:
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = MyJSFile.MyFunc()), id = UrlParameter.Optional }
);
MyFunc 获取 cookie 值并返回操作名称字符串的位置。我的代码显然不正确,我只是写它来说明我正在尝试做什么。这样的事情可能吗??
【问题讨论】:
-
MyJFile.MyFunc是客户端 JavaScript 吗?那将不可用服务器端。可以从任何地方调用该操作,而不仅仅是您的网页 - 例如 fiddler、curl、winform 应用程序。据我所知,当前路由是在应用程序启动时定义的静态查找,并且无法运行代码来确定操作(在为每个调用匹配多个路由时,这可能会非常低效)。如果是这样,它将采用以下格式:action = () => foo(),因为您当前的代码会在设置路由时将 MyFunc 的结果分配给操作(我知道这只是示例代码) -
我认为我将采用这里建议的方式...weblogs.asp.net/zowens/asp-net-mvc-javascript-routing
-
该链接不是 asp.net-mvc-routing,它是一种使用一大堆额外的非标准配置在 javascript 文件中生成链接的方法。这些“路由”在外部 javascript 中不起作用(例如,只需在浏览器中输入 url),如果这是您对问题的解决方案,那么问题应该被大幅改写。
-
您可以添加
ActionFilter并根据 cookie 重定向到所需的操作(但从评论到答案,这也不是您想要的)。目前尚不清楚您要达到的目标。
标签: javascript asp.net-mvc asp.net-mvc-routing