【问题标题】:How to get routevalues from URL with htmlhelpers or JavaScript?如何使用 htmlhelpers 或 JavaScript 从 URL 获取路由值?
【发布时间】:2015-09-03 05:43:08
【问题描述】:

我有这个 MVC MapRoute

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

还有网址

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

【问题讨论】:

  • 哦,我忘了@{ }

标签: javascript asp.net asp.net-mvc asp.net-mvc-5 asp.net-routing


【解决方案1】:

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

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

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

【讨论】:

  • 分割字符串是迄今为止最快的,我认为那里的可读性没有问题
  • 我会试试的,乍一看还不错。唯一担心的是如果 6 和 7 会改变
  • 你知道我该如何解决这个问题吗? e: TypeError: location.split 不是函数
  • 使用“window.location.href”而不是“location”?
  • 修正了错误,请使用location.href
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-05-16
  • 2012-01-03
  • 2020-05-14
  • 2022-08-21
  • 2019-02-08
  • 2011-02-22
  • 2016-04-02
相关资源
最近更新 更多