我正在调用API调用以使用javascript从服务器获取JSON数据。
$(function () {
var customersTable = $('#Customers');
var returnCustomersTable = UpdateDataTable(customersTable, "/Customers/Loaddata");
}
当我使用Visual Studio Dev环境时,这工作正常,因为我的Web应用程序是root用户,因此所有javascripts工作正常。
示例:
我的网站网址 http://localhost:4391
API调用将是: http://localhost:4391/Customers/Loaddata
这很好用。
但是当我将应用程序部署到IIS时,我的网站URL将是,
我的网站网址 http://localhost/MyAppName
但API调用仍然是,
API调用将是:http://localhost/Customers/Loaddata
,导致找不到。
由于我在单独的文件中使用javascript,因此我无法执行URL.Action
。
另一种选择是为dev和prod创建一个基本URL,并在每个servcie调用时附加。
但我在想是否有其他办法。
答案 0 :(得分:1)
ASP.NET MVC中的路由配置旨在作为应用程序中的单个位置,可以维护所有URL。
如果所有URL都是使用基于UrlHelper
的方法之一进行路由生成的,例如Url.Action()
,而不是在控制器和视图中进行硬编码,则对项目的维护有很大帮助。
只要您的JavaScript处于MVC视图中,您就可以直接解析Url.Action
。
$(function () {
var customersTable = $('#Customers');
var returnCustomersTable = UpdateDataTable(customersTable,
'@Url.Action("Loaddata", "Customers")');
}
如果JavaScript位于MVC之外的单独文件中,请考虑通过变量或函数参数传递URL。
此路由功能还使部署ASP.NET MVC变得更加容易,因为当应用程序未部署到根网站虚拟目录时,生成的URL将适应使用应用程序路径。
在IIS网站root中运行的应用程序:
/Customers/Loaddata
在配置为名为“MyAppName”的IIS应用程序的虚拟子目录中运行的应用程序:
/MyAppName/Customers/Loaddata