【问题标题】:How to get only the Controller name and action name from URL with jQuery如何使用 jQuery 从 URL 中仅获取控制器名称和操作名称
【发布时间】:2015-05-10 20:54:48
【问题描述】:

我在我的网站中使用 .net MVC,我需要在 javascript 中获取 URL,但只有控制器和操作名称,例如,如果我有:

http://stackoverflow.com/questions/9513736/current-url-without-parameters-hash-https

我需要:

http://stackoverflow.com/questions/9513736/

我找到了一些解决方案,例如:

urlBase = location.href.substring(0, location.href.lastIndexOf("/")+1)

->http://stackoverflow.com/questions/9513736/

但是,如果我的 URL 没有任何参数,我的操作名称将被截断,如下所示:

http://stackoverflow.com/questions/

有人对此有解决方案吗?

【问题讨论】:

  • 取决于 URL 的一致性和可靠性。您可以检查 URL 是否以 / 结尾,如果是,则不要对其进行子串化。这可能对你有用。就我个人而言,我想看看您是否可以通过 razor 访问控制器和操作名称并将其直接写入 javascript,这样您就不必解析它。
  • URLS 不是这样工作的;你只会得到路径。之后发生的事情完全掌握在您的手中。
  • 如果不复制 JS 中的所有路由逻辑,这是不可能的。相反,您可能希望服务器通过有效负载回显此数据,以供您在客户端使用。

标签: javascript jquery model-view-controller


【解决方案1】:

你可以使用 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];

【讨论】:

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

这将从 url 返回path。然后使用split 获取控制器名称和动作名称

var path=window.location.pathname;
var abc=path.split("/");
var controller=abc[0];
var action=abc[1] || "index";

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-23
    • 1970-01-01
    • 1970-01-01
    • 2012-06-06
    • 2013-08-17
    • 1970-01-01
    相关资源
    最近更新 更多