Jquery ajax POST 在 MVC 中调用 - 包括在 IIS 中托管的应用程序名称

Jquery ajax POST call in MVC - include application name hosted in IIS

我正在尝试使用 Jquery ajax 调用 - 调用控制器方法之一,我正在使用如下所示。 但是,当在本地主机中时,URL 格式很好。 我试图在 IIS 中部署我的应用程序并创建为一个单独的应用程序,所以我的 URL 就像 http://website.com/applicationame/Contollername/methodname.

但是在使用 url 时:“/Contollername/methodname” --- 在 js 文件中的 ajx 调用中,它在 :

中找到了控制器方法

http://website.com/Contollername/methodname。 -- 遗漏应用程序名称并抛出错误。

应用程序名称可能因环境而异,因此不能硬编码。如果有办法处理这个问题,请告诉我。

此 ajax 调用在单独的 js 文件中。


 jQuery.ajax({
                type: "POST",
                url: "/Contoller/MethodName",
                data: JSON.stringify(data),
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function (response) {

}
});

有多种选择。您描述的情况是使用虚拟路径。 MVC Razor 视图可以使用 tilda 键 (~/myrelativeurl) 处理虚拟路径。我的建议是让 MVC 生成 URL 然后在你的 Javascript.

中使用它

一种方法是使用全局 Javascript 变量来包含 MVC 为您生成的 URL,然后您可以在 jQuery 打电话。

<script>
// whole URL
var callUrl = '@Url.Action("myAction", "myController")';
// just the root (this will be the virtual path, if any)
var siteRoot = '@Request.ApplicationPath';
</script>

编辑:作为备用措施,您还可以从当前浏览器中获取域 + 虚拟路径 window,但这显然不那么可靠和可维护。