jquery - 部署为虚拟目录时,MVC 站点外部脚本不起作用

标签 jquery asp.net-mvc iis

我有一个 MVC 应用程序。这是基本设置,我对 About.cshtml 进行了以下更改:

@{
    ViewBag.Title = "About Us";
}
<script <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="493a3b2a74091c3b25670a26273d2c273d" rel="noreferrer noopener nofollow">[email protected]</a>("~/Scripts/test.js") type="text/javascript"></script>
<h2>About</h2>
<p>
     Put content here.
</p>

所以我添加了对外部脚本的引用。

脚本本身包含以下内容:

$(document).ready(function () {

    $.post('/Home/GetResult', null, function (data) {

        alert(data);

    });

});

家庭 Controller 中调用的方法是:

public int GetResult()
        {
            return 3;
        }

因此,这是一个基本设置,用户单击有关调用 GetResult 方法的信息,然后会弹出一个包含 3 的警报。

所以我在 IIS 中将其设置为网站,它按预期工作。单击“关于”时,会弹出消息并显示网站 地址为 http://localhost:xx/Home/About

然后我尝试将其设置为虚拟目录。

单击“关于”时,不会弹出任何消息。 它所在的 URL 为:http://localhost:xx/Practise/Home/About 其中practice 是虚拟目录的名称。

为什么消息没有出现?

现在 url 包含虚拟目录名称,是否无法再找到该文件?

如果需要将其托管为虚拟目录,解决此问题的最佳方法是什么?

最佳答案

您不应该使用硬编码的网址。尝试一下

$(document).ready(function () {

    $.post('@Url.Action("GetResult", "Home")', null, function (data) {

        alert(data);

    });

});

始终使用 Url 辅助函数来为您处理实际的物理名称

关于jquery - 部署为虚拟目录时,MVC 站点外部脚本不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11639717/

相关文章:

javascript - JS 在第一次加载时不工作 - 刷新后工作

c# - 检查 null 的性能损失

asp.net-mvc - 如何使用 Identity 在 ASP.NET Core 项目中禁用 HTTPS?

wcf - 通过 Azure IIS 服务器上的 Restful WCF 服务对用户进行身份验证

javascript - 另一种写javascript的方法

PHP $_POST 变量

iphone - Web 服务器和游戏服务器有什么区别?

php - 使用 symfony2 但不使用 PHP 脚本的 ERR_CONNECTION_RESET

html - 嵌入在 aspx 文件中的 @font-face 不起作用

javascript - 如何使用 HTML 和 CSS 或 jQuery 和 CSS 创建类似工具提示的 'linklist'?