我的Asp.net项目是多层项目,如DAL
,DATA
,WebApi
......等。
我的用户界面图层是html5
,angularjs
等
我的UI图层中没有服务器端代码。
我的UI图层通过带有webapi
图层的rest api进行通信。
现在我想要我的UI图层的文件夹列表。我怎样才能做到这一点 ?因为客户端脚本无权这样做。所以,只留下web api层。我可以从我的web api层获取UI层的目录列表吗?
如果是,我该怎么做?如果否,那么替代方案是什么?如何?
答案 0 :(得分:3)
我认为如果没有
,您无法在同一解决方案下访问其他项目的文件夹我认为共享文件夹是更好的解决方案:
http://support.microsoft.com/kb/324267
OR
在您的网络配置中使用固定路径,并在需要时阅读。我写了一些代码来获取同一项目中的文件夹名称。
API方法:
[HttpGet]
public IList<string> GetFolderNames(int id)
{
//FIND ALL FOLDERS IN FOLDER with in own project
string location = System.Web.HttpContext.Current.Server.MapPath("parent folder name");
//For fixed path location will be like as string location =@"E:\Target Folder\";
System.IO.DirectoryInfo dir = new System.IO.DirectoryInfo(location);
var folderList = new List<string>();
foreach (System.IO.DirectoryInfo g in dir.GetDirectories())
{
//LOAD FOLDERS
folderList.Add(g.FullName);
}
return folderList;
}
JS方法:
//service name
var serviceName = 'api controller name';
//full url
var remoteService = "Full Url" + serviceName;
//parameters
var params = {
id: 1,
};
//get method calling
$http({
url: remoteService + '/GetFolderNames',
method: 'GET',
params: params,
}).then(function (result) {
//required result
var r = result;
}).
catch (function (e) {
throw e;
});
使用服务器地图路径:
Server.MapPath(".") returns D:\WebApps\shop\products
Server.MapPath("..") returns D:\WebApps\shop
Server.MapPath("~") returns D:\WebApps\shop
Server.MapPath("/") returns C:\Inetpub\wwwroot
Server.MapPath("/shop") returns D:\WebApps\shop