考虑到$.post()
需要在Visual Studio Dev环境中与部署的IIS生产或测试环境稍微不同的URL结构。
部署到测试服务器时,应用程序在IIS中的虚拟目录下运行。 URL将类似于:
部署
网址:http://myServer/myApplication/Area/Controller/Action
使用jQuery的.post()
,我需要提供字符串:
$.post( "/myApplication/myArea/myController/myMethod"
开发
在Visual Studio环境中
卡西尼网址为:http://localhost:123/Area/Controller/Action
使用jQuery的.post()
,我需要提供字符串:
$.post( "/myArea/myController/myMethod"
问题: 如何使用相同的代码行,无论其部署的环境如何?
答案 0 :(得分:3)
我这样做的方法是通过RouteUrl
方法生成网址,如下所示:
var url = "<%= Url.RouteUrl(new { area="myArea", controller = "controller", action = "actionmethod" }) %>";
$.post(url ...
只要您的路线设置正确,就会生成相应的网址。
编辑现在可以使用未经修改的区域。
答案 1 :(得分:1)
另一个(更简单的?)实现是设置应用程序根目录的js变量:
<script type="text/javascript" >
var globalAppPath = '<%= Request.ApplicationPath %>';
</script>
然后您可以将其附加到任何网址请求的开头。
$.post( globalAppPath + "/myArea/myController/myMethod"
无论您将网络应用放在何处,它都能正常运行。