gpt4 book ai didi

javascript - 从 javascript 重定向到 Action

转载 作者:数据小太阳 更新时间:2023-10-29 04:53:37 24 4
gpt4 key购买 nike

我有一个 MVC4 项目,在客户端我需要重定向到特定的操作方法。我已阅读以下帖子 How to redirect to action from JavaScript method? ,再往下有一条关于使用的评论:

window.location.href = "/{controller}/{action}/{params}";

我已经尝试过了,但它不适用于我的项目在 IIS 中的安装位置。

我的项目已经发布到:http://localhost/SomeName.SomeOtherName/

我需要访问:http://localhost/SomeName.SomeOtherName/Home/Logout

当我按照上一篇文章的建议使用“/Controller/Action”时,我到达这里:localhost/Home/Logout,这是不正确的。

我试图将发布的位置(与上面的发布字符串相同)保留在 web.config 文件中并构建字符串(连接:发布位置 + '/Home/logout'),但这也不起作用.下面是我为此使用的 stmt。奇怪的是,这只是将当前页面的 url 与我构建的 url 连接起来。这不仅无效,而且我还遇到了那些“潜在危险的 request.path...”错误之一。

 window.location.href = "\"" + url + "/Home/logout" + "\"";

如果我使用 $(location.hostname) 来构建我的字符串,也会发生同样的事情。

有什么想法吗?

最佳答案

在为 Controller 操作生成 url 时,始终使用 url 助手。例如,如果您的重定向脚本位于 View 内,您可以这样做:

<script type="text/javascript">
window.location.href = '@Url.Action("LogOut", "Home")';
</script>

无论您的应用程序是否托管在虚拟目录中,Url.Action 服务器端帮助程序都会确保在此处生成正确的 url。

如果在另一种情况下,您的 javascript 位于一个单独的 js 文件中(这显然是最佳实践),您不能在其中使用服务器端助手,那么您有两种可能性:

  • 使用在 View 内部计算并由您的脚本使用的全局 javascript 变量:

    <script type="text/javascript">
    var logoutUrl = '@Url.Action("LogOut", "Home")';
    </script>

    然后在脚本中的某处:

    window.location.href = logoutUrl;
  • 在某些 DOM 元素上使用 HTML5 data-* 属性,这些元素将以某种方式与用户的注销相关联。例如,它可以是一些 div 或一个按钮:

    <div id="logout" data-url="@Url.Action("LogOut", "Home")">Log out</div>

    然后在你的脚本中:

    $('#logout').click(function() {
    window.location.href = $(this).data('url');
    });

    显然,这似乎是一个愚蠢且过于简单的示例,因为在这种特殊情况下,您只需使用 Html.ActionLink 来生成注销 anchor ,而无需担心任何 javascript 或类似的东西,但希望它能为您提供一些真实场景的示例。

注意在所有示例中如何使用 url 帮助器为 Controller 操作生成正确的 url 并考虑任何可能的虚拟目录。这是最重要的规则:永远不要在 ASP.NET MVC 应用程序中对 url 进行硬编码。

关于javascript - 从 javascript 重定向到 Action ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20808536/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com