如何使用 htmlhelpers 或 JavaScript 从 URL 获取路由值?

How to get routevalues from URL with htmlhelpers or JavaScript?

我有这个 MVC MapRoute

routes.MapRoute(
    name: "Authenticated",
    url: "{controller}/{action}/{foo}/{bar}",
    defaults: new { controller = "Home", action = "WelcomePage", Foo = "0", Bar = "0" }
);

和URL

http://localhost/mysite/controller/action/2/1

我如何使用 JavaScript 接收 21?我更喜欢尽可能少的子字符串工作的解决方案,因为我认为这很容易导致很多错误。

请注意 URL 有时可能以 ?filter=xx 结尾,如果它很重要的话。

我试过了

var foo= ViewContext.RouteData.Values["foo"];
var bar= ViewContext.RouteData.Values["bar"];

alert('foo: ' + foo);
alert('bar: ' + bar);

结果: e: ReferenceError: ViewContext is not defined

要编写由 razor 引擎处理的服务器端代码,您必须在语句前加上 @。仅当 Javascript 嵌入到视图中时才有效。

您也可以使用 Javascript 来完成。像这样的东西应该可以解决问题

var urlParts = location.href.split('/');
var foo = urlParts[6];
var bar = urlParts[7];