如何使用jQuery从URL中仅获取控制器名称和操作名称

4
我在我的网站中使用 .net MVC,并且需要在 JavaScript 中获取URL,但仅获取控制器和动作名称,例如如果我有:
https://dev59.com/5mkw5IYBdhLWcg3w_feJ
我需要:
https://dev59.com/5mkw5IYBdhLWcg3w_feJ
我已经找到了一些解决方案,比如: urlBase = location.href.substring(0, location.href.lastIndexOf("/")+1)
->https://dev59.com/5mkw5IYBdhLWcg3w_feJ
然而,如果我的URL没有任何参数,那么动作名称会被截断,如下所示:
http://stackoverflow.com/questions/
有人有解决方法吗?

取决于URL的一致性和可靠性。您可以检查URL是否以“/”结尾,如果是,则不要子字符串它。那可能适合您。个人而言,我会查看是否可以通过razor访问控制器和操作名称,并直接将其编写到javascript中,这样您就不必解析它。 - musefan
URL不是那样工作的;你只会得到路径。之后发生的事情完全取决于你自己。 - tcooc
这是不可能的,除非还要在JS中复制所有路由逻辑。相反,您可能希望服务器通过有效载荷将此数据回显以供客户端使用。 - Sean Kinsey
2个回答

22

您可以使用window.location.pathname来实现此功能。

对于此问题中的URL,它返回

"/questions/28946447/how-to-get-only-the-controller-name-and-action-name-from-url-with-jquery"

为了正确阅读,你可以使用:window.location.pathname.split("/")
使用以下方式读取值:

var url = window.location.pathname.split("/");
var questions = url[1];

1
谢谢,这是我的最终解决方案:var manJSCmon = location.pathname.split("/"); var local = location.protocol + '//' + location.host + "/" + manJSCmon[1] + "/" + manJSCmon[2]; - user4612487

3
window.location.pathname;

这将从URL中返回path。然后使用split来获取控制器名称和操作名称。
var path=window.location.pathname;
var abc=path.split("/");
var controller=abc[0];
var action=abc[1] || "index";

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接